Skip to content
Snippets Groups Projects

Local itk-vtk-viewer

4 files
+ 127
77
Compare changes
  • Side-by-side
  • Inline

Files

  • 8db9ac8d
    Linux and new window thread fix · 8db9ac8d
    David Grundfest authored
    Web browser window opened even if the viewer wasn't installed
    I added thread shared variable which is checked whether the
    window should be opened and server serving the files started
    
    Then I think I fixed any problem that could be on linux, whatever it was
    I changed the way it is done, hopefully more readable now
+ 28
8
from pathlib import Path
import os
import platform
from typing import Callable
import qim3d
@@ -8,7 +9,11 @@ class NotInstalledError(Exception): pass
SOURCE_FNM = "fnm env --use-on-cd | Out-String | Invoke-Expression;"
def get_dir() -> Path:
LINUX = 'Linux'
WINDOWS = 'Windows'
MAC = 'Darwin'
def get_itk_dir() -> Path:
qim_dir = Path(qim3d.__file__).parents[0] #points to .../qim3d/qim3d/
dir = qim_dir.joinpath("viz/itk_vtk_viewer")
return dir
@@ -18,7 +23,7 @@ def get_nvm_dir(dir:Path = None) -> Path:
following_folder = ".nvm"
elif platform.system() == 'Windows':
following_folder = ''
return dir.joinpath(following_folder) if dir is not None else get_dir().joinpath(following_folder)
return dir.joinpath(following_folder) if dir is not None else get_qim_dir().joinpath(following_folder)
def get_node_binaries_dir(nvm_dir:Path = None) -> Path:
"""
@@ -34,10 +39,12 @@ def get_node_binaries_dir(nvm_dir:Path = None) -> Path:
binaries_folder = 'installation'
node_folder = nvm_dir.joinpath(following_folder) if nvm_dir is not None else get_nvm_dir().joinpath(following_folder)
try:
l = sorted(os.listdir(node_folder))
except FileNotFoundError:
raise NotInstalledError
# We don't wanna throw an error
# Instead we return None and check the returned value in run.py
if not os.path.isdir(node_folder):
return None
l = sorted(os.listdir(node_folder))
for name in l[::-1]:
path = node_folder.joinpath(name)
@@ -46,11 +53,24 @@ def get_node_binaries_dir(nvm_dir:Path = None) -> Path:
def get_viewer_dir(dir:Path = None) -> Path:
following_folder = "viewer_app"
return dir.joinpath(following_folder) if dir is not None else get_dir().joinpath(following_folder)
return dir.joinpath(following_folder) if dir is not None else get_qim_dir().joinpath(following_folder)
def get_viewer_binaries(viewer_dir:Path = None) -> Path:
following_folder1 = 'node_modules'
following_folder2 = '.bin'
if viewer_dir is None:
viewer_dir = get_viewer_dir()
return viewer_dir.joinpath(following_folder1).joinpath(following_folder2)
\ No newline at end of file
return viewer_dir.joinpath(following_folder1).joinpath(following_folder2)
def run_for_platform(linux_func:Callable, windows_func:Callable, macos_func:Callable):
this_platform = platform.system()
if this_platform == LINUX:
return linux_func()
elif this_platform == WINDOWS:
return windows_func()
elif this_platform == MAC:
# return macos_func()
raise NotImplementedError
def lambda_raise(err):
raise err
Loading