def _make_button_repr_control(self, component_slider, repr_slider, repr_selection): button_refresh = Button(description=' Refresh', tooltip='Get representation info', icon='fa-refresh') button_center_selection = Button(description=' Center', tooltip='center selected atoms', icon='fa-bullseye') button_center_selection._ngl_name = 'button_center_selection' button_hide = Button(description=' Hide', icon='fa-eye-slash', tooltip='Hide/Show current representation') button_remove = Button(description=' Remove', icon='fa-trash', tooltip='Remove current representation') button_repr_parameter_dialog = Button(description=' Dialog', tooltip='Pop up representation parameters control dialog') @button_refresh.on_click def on_click_refresh(button): self._refresh(component_slider, repr_slider) @button_center_selection.on_click def on_click_center(center_selection): self._view.center_view(selection=repr_selection.value, component=component_slider.value) @button_hide.on_click def on_click_hide(button_hide): component=component_slider.value repr_index=repr_slider.value if button_hide.description == 'Hide': hide = True button_hide.description = 'Show' else: hide = False button_hide.description = 'Hide' self._view._remote_call('setVisibilityForRepr', target='Widget', args=[component, repr_index, not hide]) @button_remove.on_click def on_click_remove(button_remove): self._view._remove_representation(component=component_slider.value, repr_index=repr_slider.value) self._view._request_repr_parameters(component=component_slider.value, repr_index=repr_slider.value) @button_repr_parameter_dialog.on_click def on_click_repr_dialog(_): from nglview.widget_box import DraggableBox if self.widget_repr_parameters is not None and self.widget_repr_choices: self.widget_repr_parameters_dialog = DraggableBox([self.widget_repr_choices, self.widget_repr_parameters]) self.widget_repr_parameters_dialog._ipython_display_() self.widget_repr_parameters_dialog._dialog = 'on' bbox = _make_autofit(HBox([button_refresh, button_center_selection, button_hide, button_remove, button_repr_parameter_dialog])) return bbox
def _make_button_repr_control(self, component_slider, repr_slider, repr_selection): button_refresh = Button(description=' Refresh', tooltip='Get representation info', icon='fa-refresh') button_center_selection = Button(description=' Center', tooltip='center selected atoms', icon='fa-bullseye') button_center_selection._ngl_name = 'button_center_selection' button_hide = Button(description=' Hide', icon='fa-eye-slash', tooltip='Hide/Show current representation') button_remove = Button(description=' Remove', icon='fa-trash', tooltip='Remove current representation') @button_refresh.on_click def on_click_refresh(button): self._refresh(component_slider, repr_slider) @button_center_selection.on_click def on_click_center(center_selection): self._view.center(selection=repr_selection.value, component=component_slider.value) @button_hide.on_click def on_click_hide(button_hide): component = component_slider.value repr_index = repr_slider.value if button_hide.description == 'Hide': hide = True button_hide.description = 'Show' else: hide = False button_hide.description = 'Hide' self._view._remote_call('setVisibilityForRepr', target='Widget', args=[component, repr_index, not hide]) @button_remove.on_click def on_click_remove(button_remove): self._view._remove_representation(component=component_slider.value, repr_index=repr_slider.value) self._view._request_repr_parameters( component=component_slider.value, repr_index=repr_slider.value) bbox = _make_autofit( HBox([ button_refresh, button_center_selection, button_hide, button_remove ])) return bbox
def _make_button_repr_control(self, component_slider, repr_slider, repr_selection): button_refresh = Button( description=' Refresh', tooltip='Get representation info', icon='fa-refresh') button_center_selection = Button( description=' Center', tooltip='center selected atoms', icon='fa-bullseye') button_center_selection._ngl_name = 'button_center_selection' button_hide = Button( description=' Hide', icon='fa-eye-slash', tooltip='Hide/Show current representation') button_remove = Button( description=' Remove', icon='fa-trash', tooltip='Remove current representation') button_repr_parameter_dialog = Button( description=' Dialog', tooltip='Pop up representation parameters control dialog') @button_refresh.on_click def on_click_refresh(button): self._refresh(component_slider, repr_slider) @button_center_selection.on_click def on_click_center(center_selection): self._view.center_view( selection=repr_selection.value, component=component_slider.value) @button_hide.on_click def on_click_hide(button_hide): component = component_slider.value repr_index = repr_slider.value if button_hide.description == 'Hide': hide = True button_hide.description = 'Show' else: hide = False button_hide.description = 'Hide' self._view._remote_call( 'setVisibilityForRepr', target='Widget', args=[component, repr_index, not hide]) @button_remove.on_click def on_click_remove(button_remove): self._view._remove_representation( component=component_slider.value, repr_index=repr_slider.value) self._view._request_repr_parameters( component=component_slider.value, repr_index=repr_slider.value) @button_repr_parameter_dialog.on_click def on_click_repr_dialog(_): from nglview.widget_box import DraggableBox if self.widget_repr_parameters is not None and self.widget_repr_choices: self.widget_repr_parameters_dialog = DraggableBox( [self.widget_repr_choices, self.widget_repr_parameters]) self.widget_repr_parameters_dialog._ipython_display_() self.widget_repr_parameters_dialog._dialog = 'on' bbox = _make_autofit( HBox([ button_refresh, button_center_selection, button_hide, button_remove, button_repr_parameter_dialog ])) return bbox
def _make_repr_widget(self): button_refresh = Button(description='Refresh', tooltip='Get representation info') button_update = Button( description='Update', tooltip='Update representation by updating rinfo box') button_remove = Button(description='Remove', tooltip='Remove current representation') button_hide = Button(description='Hide', tooltip='Hide/Show current representation') button_center_selection = Button(description='Center', tooltip='center selected atoms') button_center_selection._ngl_name = 'button_center_selection' bbox = HBox([ button_refresh, button_center_selection, button_hide, button_remove ]) repr_name_text = Text(value='', description='') repr_name_text._ngl_name = 'repr_name_text' repr_selection = Text(value='', description='') repr_selection._ngl_name = 'repr_selection' repr_selection.width = repr_name_text.width = DEFAULT_TEXT_WIDTH repr_info_box = VBox([repr_name_text, repr_selection]) repr_info_box._ngl_name = 'repr_info_box' component_slider = IntSlider(value=0, description='component') component_slider._ngl_name = 'component_slider' component_slider.visible = False cvalue = ' ' component_dropdown = Dropdown(value=cvalue, options=[ cvalue, ], description='component') component_dropdown._ngl_name = 'component_dropdown' repr_slider = IntSlider(value=0, description='representation', width=DEFAULT_SLIDER_WIDTH) repr_slider._ngl_name = 'repr_slider' repr_slider.visible = True repr_text_info = Textarea(value='', description='representation parameters') repr_text_info.visible = False checkbox_repr_text = Checkbox(value=False, description='show parameters') checkbox_repr_text.visible = False repr_text_box = VBox([checkbox_repr_text, repr_text_info]) repr_text_box._ngl_name = 'repr_text_box' checkbox_reprlist = Checkbox(value=False, description='reprlist') checkbox_reprlist._ngl_name = 'checkbox_reprlist' reprlist_choices = self._make_repr_name_choices( component_slider, repr_slider) reprlist_choices._ngl_name = 'reprlist_choices' def on_update_checkbox_reprlist(change): reprlist_choices.visible = change['new'] checkbox_reprlist.observe(on_update_checkbox_reprlist, names='value') def on_click_refresh(button): self._view._request_repr_parameters( component=component_slider.value, repr_index=repr_slider.value) self._view._remote_call('requestReprInfo', target='Widget') button_refresh.on_click(on_click_refresh) def on_click_update(button): parameters = json.loads( repr_text_info.value.replace("False", "false").replace("True", "true")) self._view.update_representation(component=component_slider.value, repr_index=repr_slider.value, **parameters) self._view._set_selection(repr_selection.value, component=component_slider.value, repr_index=repr_slider.value) button_update.on_click(on_click_update) def on_click_remove(button_remove): self._view._remove_representation(component=component_slider.value, repr_index=repr_slider.value) self._view._request_repr_parameters( component=component_slider.value, repr_index=repr_slider.value) button_remove.on_click(on_click_remove) def on_click_hide(button_hide): component = component_slider.value repr_index = repr_slider.value if button_hide.description == 'Hide': hide = True button_hide.description = 'Show' elif button_hide.description == 'Show': hide = False button_hide.description = 'Hide' else: raise ValueError("must be Hide or Show") self._view._remote_call('setVisibilityForRepr', target='Widget', args=[component, repr_index, not hide]) button_hide.on_click(on_click_hide) def on_click_center(center_selection): self._view.center_view(selection=repr_selection.value, component=component_slider.value) button_center_selection.on_click(on_click_center) def on_change_repr_name(change): name = change['new'].strip() old = change['old'].strip() should_update = (self._real_time_update and old and name and name in REPR_NAMES and name != change['old'].strip()) if should_update: component = component_slider.value repr_index = repr_slider.value self._view._remote_call( 'setRepresentation', target='Widget', args=[change['new'], {}, component, repr_index]) self._view._request_repr_parameters(component, repr_index) def update_slider_info(change): self._view._request_repr_parameters( component=component_slider.value, repr_index=repr_slider.value) component_dropdown.options = tuple(self._view._ngl_component_names) def on_change_selection(change): if self._real_time_update: component = component_slider.value repr_index = repr_slider.value self._view._set_selection(change['new'], component=component, repr_index=repr_index) def on_change_component_dropdown(change): choice = change['new'] if choice: component_slider.value = self._view._ngl_component_names.index( choice) component_dropdown.observe(on_change_component_dropdown, names='value') def on_change_checkbox_repr_text(change): repr_text_info.visible = change['new'] repr_slider.observe(update_slider_info, names='value') component_slider.observe(update_slider_info, names='value') repr_name_text.observe(on_change_repr_name, names='value') repr_selection.observe(on_change_selection, names='value') checkbox_repr_text.observe(on_change_checkbox_repr_text, names='value') # HC repr_parameters_box = self._make_repr_parameter_slider() repr_parameters_box._ngl_name = 'repr_parameters_box' # NOTE: if you update below list, make sure to update _make_repr_parameter_slider # or refactor # try to "refresh" vbox = VBox([ component_dropdown, bbox, repr_info_box, component_slider, repr_slider, reprlist_choices, repr_text_box, repr_parameters_box ]) self._view._request_repr_parameters(component=component_slider.value, repr_index=repr_slider.value) return vbox