cube.SetVisibility(False) hide_all_examples() ############################################################################### # To make the menu, we'll first need to create a list of labels which # correspond with the examples. values = ['Rectangle', 'Disks', 'Image', "Button Panel", "Line and Ring Slider", "Range Slider"] ############################################################################### # Now we can create the menu. listbox = ui.ListBox2D(values=values, position=(10, 300), size=(300, 200), multiselection=False) ############################################################################### # Then we will use a callback to show the correct example when a label is # clicked. def display_element(): hide_all_examples() example = examples[values.index(listbox.selected[0])] for element in example: element.set_visibility(True) if values.index(listbox.selected[0]) == 4: cube.SetVisibility(True)
def test_ui_listbox_2d(interactive=False): filename = "test_ui_listbox_2d" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") # Values that will be displayed by the listbox. values = list(range(1, 42 + 1)) values.append("A Very Very Long Item To Test Text Overflow of List Box 2D") if interactive: listbox = ui.ListBox2D(values=values, size=(500, 500), multiselection=True, reverse_scrolling=False, background_opacity=0.3) listbox.center = (300, 300) listbox.panel.opacity = 0.2 show_manager = window.ShowManager(size=(600, 600), title="FURY ListBox") show_manager.initialize() show_manager.scene.add(listbox) show_manager.start() # Recorded events: # 1. Click on 1 # 2. Ctrl + click on 2, # 3. Ctrl + click on 2. # 4. Use scroll bar to scroll to the bottom. # 5. Click on "A Very Very Long Item...". # 6. Use scroll bar to scroll to the top. # 7. Click on 1 # 8. Use mouse wheel to scroll down. # 9. Shift + click on "A Very Very Long Item...". # 10. Use mouse wheel to scroll back up. listbox = ui.ListBox2D(values=values, size=(500, 500), multiselection=True, reverse_scrolling=False) listbox.center = (300, 300) # We will collect the sequence of values that have been selected. selected_values = [] def _on_change(): selected_values.append(list(listbox.selected)) # Set up a callback when selection changes. listbox.on_change = _on_change # Assign the counter callback to every possible event. event_counter = EventCounter() event_counter.monitor(listbox) show_manager = window.ShowManager(size=(600, 600), title="FURY ListBox") show_manager.scene.add(listbox) show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right values were selected. expected = [[1], [1, 2], [1], ["A Very Very Long Item To \ Test Text Overflow of List Box 2D"], [1], values] npt.assert_equal(len(selected_values), len(expected)) assert_arrays_equal(selected_values, expected) # Test without multiselection enabled. listbox.multiselection = False del selected_values[:] # Clear the list. show_manager.play_events_from_file(recording_filename) # Check if the right values were selected. expected = [[1], [2], [2], ["A Very Very Long Item To \ Test Text Overflow of List Box 2D"], [1], ["A Very Very Long Item To Test \ Text Overflow of List Box 2D"]] npt.assert_equal(len(selected_values), len(expected)) assert_arrays_equal(selected_values, expected)
def initialize(self): print(sys.version) global renderer, renderWindow, renderWindowInteractor #, cone, mapper, actor # Bring used components self.registerVtkWebProtocol(protocols.vtkWebMouseHandler()) self.registerVtkWebProtocol(protocols.vtkWebViewPort()) self.registerVtkWebProtocol(protocols.vtkWebViewPortImageDelivery()) # self.registerVtkWebProtocol(protocols.vtkWebPublishImageDelivery(decode=False)) self.registerVtkWebProtocol(protocols.vtkWebViewPortGeometryDelivery()) # Update authentication key to use self.updateSecret(_WebCone.authKey) # tell the C++ web app to use no encoding. vtkWebPublishImageDelivery must be set to decode=False to match. # self.getApplication().SetImageEncoding(0) # Create default pipeline (Only once for all the session) if not _WebCone.view: TEST_HORIZON = False if not TEST_HORIZON: showm = window.ShowManager() showm.initialize() slider_demo = self.build_slider_demo() brain_demo = self.build_brain_demo(showm) bundle_demo = self.build_bundle_demo() surface_demo = self.build_surface_demo(showm) examples = [slider_demo, brain_demo] examples_names = [name for name, act in examples] listbox = ui.ListBox2D(values=examples_names, position=(10, 300), size=(300, 80), multiselection=False) def hide_all_examples(): for _, l_act in examples: for element in l_act: if hasattr(element, 'add_to_scene'): element.set_visibility(False) else: element.SetVisibility(False) def display_element(): hide_all_examples() example = examples[examples_names.index( listbox.selected[0])] for element in example[1]: if hasattr(element, 'add_to_scene'): element.set_visibility(True) else: element.SetVisibility(True) listbox.on_change = display_element listbox.panel.color = (1.0, 1.0, 1.0) listbox.panel.opacity = 0.3 hide_all_examples() showm.scene.add(listbox) for _, l_act in examples: for element in l_act: showm.scene.add(element) # VTK specific code renderer = showm.scene renderWindow = showm.window renderWindowInteractor = showm.iren else: affine = np.diag([2., 1, 1, 1]).astype('f8') data = 255 * np.random.rand(150, 150, 150) images = [(data, affine)] from dipy.segment.tests.test_bundles import f1 streamlines = f1.copy() tractograms = [streamlines] Horizon(tractograms, images=images, cluster=True, cluster_thr=5, random_colors=False, length_lt=np.inf, length_gt=0, clusters_lt=np.inf, clusters_gt=0, world_coords=True) def calc_suare(numbers, showm): print("Calculate square numbers") for n in numbers: time.sleep(1) print("square:", n * n) showm.scene.GetActiveCamera().Azimuth(10) # showm.render() # view = self.getApplication().GetObjectIdMap().GetActiveObject("VIEW") # arr = np.random.rand(100) # t1 = threading.Thread(target=calc_suare, args=(arr, showm)) # t1.start() print("Auth-key {}".format(_WebCone.authKey)) print('Initialization --- OK') print('Starting FURY SERVER') # VTK Web application specific _WebCone.view = renderWindow self.getApplication().GetObjectIdMap().SetActiveObject( "VIEW", renderWindow)
# We create some panels and then we arrange them in a grid fashion # # First, we create some panels with different sizes/positions panel_1 = ui.Panel2D(size=(200, 200), color=(0.4, 0.6, 0.3), position=(100, 100)) 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))
import fury.ui as ui import fury.window as window values = [ 'abcdefghijklmnopqrstuvwxyz', 'ahdfjkhkashdfjkhdskfhiweuroqweqr', 'akdiuhdaiufhasdfusdffsdfusdyf', 'Soham', '012345678901234567', 'dfhfsjkljfhsakljfhsjkaljhfajklhgsfajkljhgajkljhkakjljhaklhgfakljhgfajh' ] listbox = ui.ListBox2D(values=values, size=(300, 300)) sm = window.ShowManager(size=(600, 600)) sm.scene.add(listbox) sm.start()