def __init__(self, xface):
self.xface = xface
if self.xface.is_installed():
version_string = xface.installed_version()
if not version_string:
version_string = 'unknown'
if version_string != xface.expectedversion:
version_string = '<span style="color:red">%s</span>' % version_string
self.maintext = ipy.HTML(
('<span class="nbv-table-row nbv-width-med nbv-monospace">'
' {xface.packagename}</span> '
'<span class="nbv-table-row nbv-monospace nbv-width-sm">'
' {localversion}</span> '
'<span class="nbv-table-row nbv-monospace nbv-width-sm">'
' {xface.expectedversion}</span>'
'<span class="nbv-width-sm nbv-table-row"> </span>' # empty space
).format(xface=xface,
localversion=(version_string if self.xface.is_installed()
else MISSING)))
if xface.required:
self.selector = ipy.ToggleButtons(options=['locally'])
elif not xface.is_installed():
self.selector = ipy.ToggleButtons(options=['in docker'],
button_style='warning')
else:
self.selector = ipy.ToggleButtons(options=['locally', 'in docker'],
value='in docker' if xface.force_remote else 'locally',
button_style='info')
self.selector.observe(self._toggle, 'value')
self.selector.add_class('nbv-width-lg')
self.selector.add_class("nbv-table-row")
children = [self.maintext, self.selector]
if not self.xface.required and self.xface.is_installed():
self.save_button = ipy.Button(description='Make default')
self.save_button.on_click(self.save_selection)
self.save_button.add_class('nbv-table-row')
children.append(self.save_button)
super().__init__(children=children,
layout=ipy.Layout(width='100%', align_items='flex-end'))
python类HTML的实例源码
configurator.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 25
收藏 0
点赞 0
评论 0
def __init__(self, paramdef):
super(ParamSelector, self).__init__(layout=ipy.Layout(display='flex',
flex_flow='nowrap',
align_content='stretch'))
self.paramdef = paramdef
children = []
self.name = ipy.HTML("<p style='text-align:right'>%s:</p>" % paramdef.displayname,
layout=ipy.Layout(width='200px'))
children.append(self.name)
if paramdef.choices:
self.selector = ipy.Dropdown(options=paramdef.choices, **self.WIDGETKWARGS)
elif paramdef.type == bool:
self.selector = ipy.ToggleButtons(options=[True, False], **self.WIDGETKWARGS)
elif paramdef.units:
self.selector = UnitText(units=paramdef.units, **self.WIDGETKWARGS)
elif paramdef.type == float:
self.selector = ipy.FloatText(**self.WIDGETKWARGS)
elif paramdef.type == int:
self.selector = ipy.IntText(**self.WIDGETKWARGS)
elif paramdef.type == str:
self.selector = ipy.Text(**self.WIDGETKWARGS)
else:
self.selector = ReadOnlyRepr(**self.WIDGETKWARGS)
children.append(self.selector)
children = [self.name, self.selector]
self.default_button = None
if paramdef.default:
self.default_button = ipy.Button(description='Default',
tooltip='Set to default: %s' % self.paramdef.default,
layout=ipy.Layout(width='75px'))
self.default_button.on_click(self.default)
children.append(self.default_button)
self.default()
self.help_link = None
if paramdef.help_url:
self.help_link = ipy.HTML('<a href="%s" target="_blank">?</a>' % paramdef.help_url)
children.append(self.help_link)
self.children = children
def __init__(self, mol):
self._current_shapes = []
self.mol = mol
self.tolerance = 0.3 * u.angstrom
self.original_coords = mol.positions.copy()
self.showing = ipy.HTML()
self.viewer = mol.draw3d(width='650px')
""":type viewer: moldesign.viewer.GeometryViewer"""
self.description = ipy.HTML()
self.symm_selector = ipy.Select()
self.symm_selector.observe(self.show_symmetry, names='value')
self.apply_button = ipy.Button(description='Symmetrize')
self.apply_button.on_click(self.apply_selected_symmetry)
self.reset_button = ipy.Button(description='Reset')
self.reset_button.on_click(self.reset_coords)
self.apply_all_button = ipy.Button(description='Apply all',
layout=ipy.Layout(padding='10px'))
self.apply_all_button.on_click(self.set_highest_symmetry)
self.tolerance_descrip = ipy.HTML(u'<small>tolerance/\u212B</small>',)
self.tolerance_chooser = ipy.BoundedFloatText(value=self.tolerance.value_in(u.angstrom),
min=0.0)
self.recalculate_button = ipy.Button(description='Recalculate')
self.recalculate_button.on_click(self.coords_changed)
self.symm_pane = VBox([self.description,
self.symm_selector,
HBox([self.apply_button, self.reset_button]),
self.apply_all_button,
HBox([self.tolerance_chooser, self.recalculate_button]),
self.tolerance_descrip],
layout=ipy.Layout(width='325px'))
self.symmetry = None
self.coords_changed()
self.hbox = HBox([VBox([self.viewer, self.showing]), self.symm_pane])
super().__init__([self.hbox])