Browse Source

refactor native mode

Falko Schindler 1 year ago
parent
commit
32ab9767b7

+ 2 - 2
nicegui/app.py

@@ -10,7 +10,7 @@ from fastapi.staticfiles import StaticFiles
 from . import background_tasks, globals, helpers  # pylint: disable=redefined-builtin
 from .client import Client
 from .logging import log
-from .native import Native
+from .native import NativeConfig
 from .observables import ObservableSet
 from .server import Server
 from .storage import Storage
@@ -27,7 +27,7 @@ class App(FastAPI):
 
     def __init__(self, **kwargs) -> None:
         super().__init__(**kwargs)
-        self.native = Native()
+        self.native = NativeConfig()
         self.storage = Storage()
         self.urls = ObservableSet()
         self._state: State = State.STOPPED

+ 12 - 0
nicegui/native/__init__.py

@@ -0,0 +1,12 @@
+from .native import WindowProxy, method_queue, response_queue
+from .native_config import NativeConfig
+from .native_mode import activate, find_open_port
+
+__all__ = [
+    'activate',
+    'find_open_port',
+    'method_queue',
+    'NativeConfig',
+    'response_queue',
+    'WindowProxy',
+]

+ 3 - 12
nicegui/native.py → nicegui/native/native.py

@@ -1,12 +1,10 @@
 import inspect
 import warnings
-from dataclasses import dataclass, field
 from multiprocessing import Queue
-from typing import Any, Callable, Dict, Optional, Tuple
+from typing import Any, Callable, Tuple
 
-from .dataclasses import KWONLY_SLOTS
-from .logging import log
-from .run_executor import io_bound
+from ..logging import log
+from ..run_executor import io_bound
 
 method_queue: Queue = Queue()
 response_queue: Queue = Queue()
@@ -131,10 +129,3 @@ try:
 except ModuleNotFoundError:
     class WindowProxy:  # type: ignore
         pass  # just a dummy if webview is not installed
-
-
-@dataclass(**KWONLY_SLOTS)
-class Native:
-    start_args: Dict[str, Any] = field(default_factory=dict)
-    window_args: Dict[str, Any] = field(default_factory=dict)
-    main_window: Optional[WindowProxy] = None

+ 12 - 0
nicegui/native/native_config.py

@@ -0,0 +1,12 @@
+from dataclasses import dataclass, field
+from typing import Any, Dict, Optional
+
+from ..dataclasses import KWONLY_SLOTS
+from .native import WindowProxy
+
+
+@dataclass(**KWONLY_SLOTS)
+class NativeConfig:
+    start_args: Dict[str, Any] = field(default_factory=dict)
+    window_args: Dict[str, Any] = field(default_factory=dict)
+    main_window: Optional[WindowProxy] = None

+ 4 - 3
nicegui/native_mode.py → nicegui/native/native_mode.py

@@ -11,9 +11,10 @@ import warnings
 from threading import Event, Thread
 from typing import Any, Callable, Dict, List, Tuple
 
-from . import globals, helpers, native, optional_features  # pylint: disable=redefined-builtin
-from .logging import log
-from .server import Server
+from .. import globals, helpers, optional_features  # pylint: disable=redefined-builtin
+from ..logging import log
+from ..server import Server
+from . import native
 
 try:
     with warnings.catch_warnings():

+ 2 - 3
nicegui/run.py

@@ -9,7 +9,6 @@ from starlette.routing import Route
 from uvicorn.main import STARTUP_FAILURE
 from uvicorn.supervisors import ChangeReload, Multiprocess
 
-from . import native_mode  # pylint: disable=redefined-builtin
 from . import air, globals, helpers  # pylint: disable=redefined-builtin
 from . import native as native_module
 from .client import Client
@@ -117,9 +116,9 @@ def run(*,
     if native:
         show = False
         host = host or '127.0.0.1'
-        port = native_mode.find_open_port()
+        port = native_module.find_open_port()
         width, height = window_size or (800, 600)
-        native_mode.activate(host, port, title, width, height, fullscreen, frameless)
+        native_module.activate(host, port, title, width, height, fullscreen, frameless)
     else:
         host = host or '0.0.0.0'
 

+ 4 - 3
nicegui/run_with.py

@@ -3,9 +3,10 @@ from typing import Optional, Union
 
 from fastapi import FastAPI
 
-from nicegui import globals, storage  # pylint: disable=redefined-builtin
-from nicegui.language import Language
-from nicegui.nicegui import handle_shutdown, handle_startup
+from . import globals, storage  # pylint: disable=redefined-builtin
+from .app import App
+from .language import Language
+from .nicegui import handle_shutdown, handle_startup
 
 
 def run_with(

+ 4 - 4
nicegui/server.py

@@ -8,7 +8,7 @@ import uvicorn
 
 from . import globals  # pylint: disable=redefined-builtin
 from . import storage  # pylint: disable=redefined-builtin
-from . import native as native_module
+from .native import native
 
 
 class CustomServerConfig(uvicorn.Config):
@@ -29,9 +29,9 @@ class Server(uvicorn.Server):
         self.instance = self
         assert isinstance(self.config, CustomServerConfig)
         if self.config.method_queue is not None and self.config.response_queue is not None:
-            native_module.method_queue = self.config.method_queue
-            native_module.response_queue = self.config.response_queue
-            globals.app.native.main_window = native_module.WindowProxy()
+            globals.app.native.main_window = native.WindowProxy()
+            native.method_queue = self.config.method_queue
+            native.response_queue = self.config.response_queue
 
         storage.set_storage_secret(self.config.storage_secret)
         super().run(sockets=sockets)