Eto Webview Unable to Navigate to URLs

Hi all,

I’m running into an issue on a colleague’s computer. We have a python script that opens an Eto Webview, like the below code. It runs as expected on my computer. Like this:

On my colleague’s computer however, the Eto window is blank:

He is able to navigate to the URL on his webbrowser so the issue seems Eto related. We’ve tried other URLs (google etc) and the issue persists.

Any ideas as to why his Eto webview cannot navigate to URLs?

Here is the code if its helpful:

import os
import System
import Rhino
import Rhino.UI
import Eto.Drawing as drawing
import Eto.Forms as forms
import scriptcontext as sc
import rhinoscriptsyntax as rs

################################################################################
# EtoModelessWebview class
################################################################################
class EtoModelessWebviewInstall(forms.Form):
    
    # Initializer
    def __init__(self):
        self.Initialize()
        #self.CreateFormContents()
    
    # Basic form initialization
    def Initialize(self):
        self.Title = "Eto Webview"
        self.Padding = drawing.Padding(0)
        self.Size = drawing.Size(620,920)
        # FormClosed event handler
        self.Closed += self.OnFormClosed

    def CreateWebView(self):
        self.m_webview = forms.WebView()
        self.m_webview.Url = System.Uri('http://developer.rhino3d.com/guides/rhinopython/')
        return self.m_webview
    
    # Create all of the controls used by the form
    def CreateFormContents(self):
        # Create layout
        layout = forms.DynamicLayout()
        layout.Padding = drawing.Padding(0)
        layout.Spacing = drawing.Size(5, 5)
        # Add controls to layout
        layout.AddRow(self.CreateWebView())
        # Set the content
        self.Content = layout
    
    
    # Form Closed event handler
    def OnFormClosed(self, sender, e):
        # Dispose of the form and remove it from the sticky dictionary
        if sc.sticky.has_key('install_modeless_webview'):
            form = sc.sticky['install_modeless_webview']
            if form:
                form.Dispose()
                form = None
            sc.sticky.Remove('install_modeless_webview')


def RunEtoModelessWebviewInstall():
    
    # See if the form is already visible
    if sc.sticky.has_key('install_modeless_webview'):
        #return
        print "uh oh already exists..."
        
    # Create and show form
    form = EtoModelessWebviewInstall()
    form.Owner = Rhino.UI.RhinoEtoApp.MainWindow
    form.Show()
    # Add the form to the sticky dictionary so it
    # survives when the main function ends.
    sc.sticky['install_modeless_webview'] = form

if __name__ == '__main__':
    
    RunEtoModelessWebviewInstall()
    

Hi @Michael_H,

What version of Rhino is your colleague using? Have him run the SystemInfo command and post the results.

Also, a script worth running:

import Eto
import Rhino
import System

class test_webview_dialog(Eto.Forms.Dialog[bool]):
    def __init__(self, url):
        self.Title = "Test"
        self.Padding = Eto.Drawing.Padding(5)
        self.Size = Eto.Drawing.Size(640, 480)
        self.Resizable = True
        self.web_view = Eto.Forms.WebView()
        self.web_view.Url = System.Uri(url)
        self.Content = self.web_view

if( __name__ == "__main__" ):
    dialog = test_webview_dialog('https://www.whatsmybrowser.org/')
    dialog.ShowModal(Rhino.UI.RhinoEtoApp.MainWindow)

– Dale

Thanks @dale, my colleague sees a blank Eto window when he runs the script you posted:

and his system info is below. He and I have the same Eto version ( C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.31.23166.15001) so we’re thinking it may be an issue outside of Rhino.

Rhino 7 SR31 2023-6-15 (Rhino 7, 7.31.23166.15001, Git hash:master @ 850d276b2d59d7e51843939e4cf674b356bcd354)
License type: Commercial, build 2023-06-15
License details: LAN Zoo Network Node

Windows 11 (10.0.22621 SR0.0) or greater (Physical RAM: 64Gb)

Computer platform: DESKTOP 

Standard graphics configuration.
  Primary display and OpenGL: NVIDIA GeForce RTX 3090 (NVidia) Memory: 24GB, Driver date: 7-21-2022 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 516.94
    > Accelerated graphics device with 4 adapter port(s)
        - Windows Main Display attached to adapter port #0
        - Secondary monitor attached to adapter port #1

Secondary graphics devices.
  Intel(R) UHD Graphics 770 (Intel) Memory: 1GB, Driver date: 5-26-2022 (M-D-Y).
    > Integrated graphics device with 4 adapter port(s)
        - There are no monitors attached to this device!

OpenGL Settings
  Safe mode: Off
  Use accelerated hardware modes: On
  Redraw scene when viewports are exposed: On
  Graphics level being used: OpenGL 4.6 (primary GPU's maximum)
  
  Anti-alias mode: 4x
  Mip Map Filtering: Linear
  Anisotropic Filtering Mode: High
  
  Vendor Name: NVIDIA Corporation
  Render version: 4.6
  Shading Language: 4.60 NVIDIA
  Driver Date: 7-21-2022
  Driver Version: 31.0.15.1694
  Maximum Texture size: 32768 x 32768
  Z-Buffer depth: 24 bits
  Maximum Viewport size: 32768 x 32768
  Total Video Memory: 24 GB

Rhino plugins that do not ship with Rhino
  C:\Program Files\Chaos Group\V-Ray\V-Ray for Rhinoceros\V7\VRayForRhino.rhp	"V-Ray for Rhino"	
  C:\Program Files\Enscape\Bin64\Enscape.Rhino7.Plugin.dll	"Enscape.Rhino7.Plugin"	0.0.22353.1023
  C:\Users\kec\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\3XNHub\1.0.12\3XNHub.rhp	"3XNHub"	1.0.8483.20848
  C:\ProgramData\Beam\App\RHINOBEAM.dll	"MKS BEAM"	1.8.1.1

Rhino plugins that ship with Rhino
  C:\Program Files\Rhino 7\Plug-ins\Commands.rhp	"Commands"	7.31.23166.15001
  C:\Program Files\Rhino 7\Plug-ins\rdk.rhp	"Renderer Development Kit"	
  C:\Program Files\Rhino 7\Plug-ins\RhinoScript.rhp	"RhinoScript"	
  C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp	"Rhino Render"	7.31.23166.15001
  C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp	"RDK_EtoUI"	7.31.23166.15001
  C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp	"Renderer Development Kit UI"	
  C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp	"Snapshots"	
  C:\Program Files\Rhino 7\Plug-ins\IronPython\RhinoDLR_Python.rhp	"IronPython"	7.31.23166.15001
  C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp	"RhinoCycles"	7.31.23166.15001
  C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp	"Toolbars"	7.31.23166.15001
  C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp	"3Dconnexion 3D Mouse"	
  C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp	"Displacement"	

Hi @Michael_H,

You might start by disabling the “Plug-ins that do not ship with Rhino”, so we can eliminate this possibility.

– Dale

Thanks @dale , he ended up doing a clean Windows level install on his computer and now the Eto Webview can navigate as it should. He still has the same external plug-ins involved but it must have been some other issue outside of Rhino. Thank you for your help though!