Skip to content

Commit

Permalink
more
Browse files Browse the repository at this point in the history
  • Loading branch information
hainm committed Dec 3, 2024
1 parent 0c963e1 commit 88e3d01
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 81 deletions.
19 changes: 19 additions & 0 deletions nglview/widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ def __init__(self, **kwargs):
self._handle_msg_thread = threading.Thread(target=self.on_msg, args=(self._handle_custom_widget_msg,))
self._handle_msg_thread.daemon = True
self._handle_msg_thread.start()
self._state = None

def _handle_custom_widget_msg(self, _, msg, buffers):
pass
Expand All @@ -164,6 +165,9 @@ def _get_remote_call_msg(self, method_name, target='Widget', args=None, kwargs=N
msg.update(other_kwargs)
return msg

def _js(self, code, **kwargs):
self._remote_call('executeCode', target='Widget', args=[code], **kwargs)

@observe('loaded')
def on_loaded(self, change):
if change['new']:
Expand All @@ -184,6 +188,21 @@ def _thread_run(self, func, *args):
def _wait_until_finished(self, timeout=0.0001):
pass

@observe('frame')
def _on_frame_changed(self, change):
"""set and send coordinates at current frame
"""
self._set_coordinates(change['new'])

def render_image(self):
image = widgets.Image()
self._js(f"this.exportImage('{image.model_id}')")
# image.value will be updated in _handle_custom_widget_msg
return image

def handle_resize(self):
self._js("this.plugin.handleResize()")


class NGLWidget(BaseWidget):
_view_name = Unicode("NGLView").tag(sync=True)
Expand Down
78 changes: 0 additions & 78 deletions nglview/widget_molstar.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,30 +38,6 @@ def __init__(self):
self._trajlist = []
self._callbacks_before_loaded = []
self._event = threading.Event()
self._state = None

def render_image(self):
image = widgets.Image()
self._js(f"this.exportImage('{image.model_id}')")
# image.value will be updated in _handle_custom_widget_msg
return image

def handle_resize(self):
self._js("this.plugin.handleResize()")

@observe('loaded')
def on_loaded(self, change):
if change['new']:
self._fire_callbacks(self._callbacks_before_loaded)

def _wait_until_finished(self, timeout=0.0001):
# FIXME: dummy for now
pass

def _load_structure_data(self, data: str, format: str = 'pdb', preset="default"):
self._remote_call("loadStructureFromData",
target="Widget",
args=[data, format, preset])

def _handle_custom_widget_msg(self, widget, msg, buffers):
msg_type = msg.get("type")
Expand All @@ -81,60 +57,6 @@ def _handle_custom_widget_msg(self, widget, msg, buffers):
elif msg_type == 'getCamera':
self._molcamera = data

def render_image(self):
image = widgets.Image()
self._js(f"this.exportImage('{image.model_id}')")
# image.value will be updated in _molview_handle_message
return image

def _js(self, code, **kwargs):
# nglview code
self._remote_call('executeCode',
target='Widget',
args=[code],
**kwargs)

def _remote_call(self,
method_name,
target='Widget',
args=None,
kwargs=None,
**other_kwargs):

# adapted from nglview
msg = self._get_remote_call_msg(method_name,
target=target,
args=args,
kwargs=kwargs,
**other_kwargs)
def callback(widget, msg=msg):
widget.send(msg)

callback._method_name = method_name
callback._msg = msg

if self.loaded:
self._remote_call_thread.q.append(callback)
else:
# send later
# all callbacks will be called right after widget is loaded
self._callbacks_before_loaded.append(callback)

def _get_remote_call_msg(self,
method_name,
target='Widget',
args=None,
kwargs=None,
**other_kwargs):
# adapted from nglview
msg = {}
msg['target'] = target
msg['type'] = 'call_method'
msg['methodName'] = method_name
msg['args'] = args
msg['kwargs'] = kwargs
return msg

def add_trajectory(self, trajectory):
self._load_structure_data(trajectory.get_structure_string(),
'pdb') # FIXME
Expand Down
6 changes: 3 additions & 3 deletions notebooks/gui.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "42bb11fe3851422d9dce75d8f5275a47",
"model_id": "12c6840cc52e496d8afec6191657f56a",
"version_major": 2,
"version_minor": 0
},
Expand All @@ -29,7 +29,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bb3b67e8b81741ea8197aa725561be11",
"model_id": "c000b83609f540d68da5ad2e56d6e3ef",
"version_major": 2,
"version_minor": 0
},
Expand All @@ -43,7 +43,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ed471be3289c41999a87041a7aa12fab",
"model_id": "8ca0393e225b4b99a74443dcae364368",
"version_major": 2,
"version_minor": 0
},
Expand Down

0 comments on commit 88e3d01

Please sign in to comment.