got user sys script dirs working again

This commit is contained in:
Eric 2023-06-08 21:25:16 -07:00
parent f3158dda86
commit 68ccc3df88
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
16 changed files with 129 additions and 105 deletions

56
.efrocachemap generated
View File

@ -4072,26 +4072,26 @@
"build/assets/workspace/ninjafightplug.py": "https://files.ballistica.net/cache/ba1/c5/09/4f10b8a21ba87aa5509cff7a164b",
"build/assets/workspace/onslaughtplug.py": "https://files.ballistica.net/cache/ba1/ff/0a/a354984f9c074dab0676ac7e4877",
"build/assets/workspace/runaroundplug.py": "https://files.ballistica.net/cache/ba1/2a/1c/9ee5db6d1bceca7fa6638fb8abde",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/4b/7b/656bbbcb41f7b43eeee0d0775d9a",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/f4/3e/b48cab42185c07ff6bfc355f3e5e",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/d6/9e/c544d5d86c20a42bcee9f7be1cde",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/d1/f1/24aaba8bd77035b9d8601eaea3cb",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/39/1f/6a762fd0ccc4ca62a2b7a51f6cc4",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/1a/5e/3b08dab2bffd74edbe744d3717a3",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/c2/4f/f146682e88224ba08219b0ebadc4",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/c2/8b/351d1a6de44b45c06e85b39198a1",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/c4/55/0328e26e65974ee613eb0ff8a99e",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/fc/4e/3ff90a44e988e3db7ea66ca4f073",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/4c/b8/5d909139a0fad91c70c6f870feae",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/16/30/16502e5f928405c6d44c0f1a24bd",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/71/bc/546d02a06b6939c3112e155db26c",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/ea/86/eb5c10d57047ee32a82ac3c3790a",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/50/9a/4eef71525e706d4a971c3214422b",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/40/ee/9e6425089e61ff8027871016eeb4",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/7a/b2/d19573e4357cdf109b4e2af43118",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/42/a3/d08f3b7a1594bb1ba4f2ef60dc6e",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/25/45/82f2db0fef5a8df7cb5e71ba4d4c",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/81/14/0121acd7c0cfc62d9c4b51ce60bb",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/2f/be/56cbff27830a18d6d60ef31c1cdd",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/f9/e1/344297c240047057658d77dab2c3",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/df/1e/0e166ac6bde0400abf6cf238d4f5",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/cd/5f/62fa669b1054034a39d501ddc8f3",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/a0/c6/17efa1b0fa2d708d6875a57e7d48",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/ef/ea/806a19fe00441dc382954a3f3080",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/93/6e/22f7fc9f33056a672f58bfbe8402",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/40/e8/03cace193459c0635f1342b28b53",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/5a/17/125467b6c2b884e96a5f255466a6",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/23/af/cd64e4cdd02aed0f7c55167fb994",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/11/bc/b5de2f3ea4f68f420efd8e2f8672",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/8e/b1/7e170050323d9e08a5387fb61728",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/12/89/996eb56a1eac10bc5eef98ceb307",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/4f/61/3ea177ccbfca5b78faacd6106324",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/a0/e8/ec660025b4b61eb3f105fbe3915a",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/87/9e/f60d6c7c8097e91f1b75432a96fd",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/80/59/9f5d6da1bfc7e8502ff8faf98371",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/87/3e/b431a2c8ff6a6ab647772c2874d8",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/1c/09/b6bcc16ecdd3b3bde138a7975f84",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/3c/9e/aae04414e59968b1200e45dc490a",
"build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/58/55/b6ae6dd4f3615fa87bb170a43233",
"build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/b9/f8/37285d0ced7794a82534d13c33ac",
"build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/c7/cc/0c5f0afbfa0ddabaea8d5838562a",
@ -4108,14 +4108,14 @@
"build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/96/2e/1b0ba43fe24fe9cc223a434db647",
"build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/f3/83/581b7df96f6516032a0747b83e15",
"build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/6a/6d/7aaf7617929eeff41bc5a574e6c8",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/4c/5b/e6f257859efef56c7bf8a16efb8c",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/be/ac/470e69d1b87eb9a6bb33d2039c4e",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/91/e9/2fc1d723e470d368a4160ed03f67",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/67/2c/ed2086d173cc6e75bd0df57f430c",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/c7/d0/2ed1069a23bc3f2e044e0eb6d493",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/4f/57/5965c82b8374280182436f235aac",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/97/ca/30e53a2369274ab60e4f9f764476",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/b7/16/5bac6aacbe4f663a2ff842338eab",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/cd/49/d11935a48d1d6e2847ab6a51b4fa",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/a1/8a/3b50352ea71fa172f5e32fb60005",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/f0/3c/9e1731eaebd85e6b70ac00113f0a",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/6d/5e/4fa8e18fb7a5e1d41e214a354081",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/25/21/98f151d2018cb4394cf1b533afd8",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/23/53/214f66c1cb5aeace50a7ecc94572",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/92/54/9be16e024bf4a6bc1015c487402c",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/42/ae/47ec74d1efe9b02bf7fc88a310fb",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/52/c6/c11130af7b10d6c0321add5518fa",
"src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/38/c3/1dedd5e74f2508efc5974c8815a1",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/75/9f/bcf597b362c9f2480cb348188bdd",

View File

@ -1,4 +1,4 @@
### 1.7.20 (build 21078, api 8, 2023-06-08)
### 1.7.20 (build 21079, api 8, 2023-06-08)
- This seems like a good time for a `refactoring` release in anticipation of
changes coming in 1.8. Basically this means that a lot of things will be
@ -309,6 +309,10 @@
windows. Please holler if you are still seeing this. This file gets written
for debugging whenever the logic thread remains unresponsive for several
seconds.
- (build 21078) Custom system scripts dirs works again (complete copies of app
system scripts living in your mods directory under `sys/$(YOUR_APP_VERSION)`.
Tools for creating/destroying these setups are now at `babase.modutils` (they
had been placed under bauiv1 but that was just silly).
### 1.7.19 (build 20997, api 7, 2023-01-19)

View File

@ -28,6 +28,7 @@
"ba_data/python/babase/__pycache__/_text.cpython-311.opt-1.pyc",
"ba_data/python/babase/__pycache__/_workspace.cpython-311.opt-1.pyc",
"ba_data/python/babase/__pycache__/internal.cpython-311.opt-1.pyc",
"ba_data/python/babase/__pycache__/modutils.cpython-311.opt-1.pyc",
"ba_data/python/babase/_accountv2.py",
"ba_data/python/babase/_app.py",
"ba_data/python/babase/_appcomponent.py",
@ -58,6 +59,7 @@
"ba_data/python/babase/_text.py",
"ba_data/python/babase/_workspace.py",
"ba_data/python/babase/internal.py",
"ba_data/python/babase/modutils.py",
"ba_data/python/baclassic/__init__.py",
"ba_data/python/baclassic/__pycache__/__init__.cpython-311.opt-1.pyc",
"ba_data/python/baclassic/__pycache__/_accountv1.cpython-311.opt-1.pyc",
@ -346,10 +348,8 @@
"ba_data/python/bauiv1/__init__.py",
"ba_data/python/bauiv1/__pycache__/__init__.cpython-311.opt-1.pyc",
"ba_data/python/bauiv1/__pycache__/_hooks.cpython-311.opt-1.pyc",
"ba_data/python/bauiv1/__pycache__/modutils.cpython-311.opt-1.pyc",
"ba_data/python/bauiv1/__pycache__/onscreenkeyboard.cpython-311.opt-1.pyc",
"ba_data/python/bauiv1/_hooks.py",
"ba_data/python/bauiv1/modutils.py",
"ba_data/python/bauiv1/onscreenkeyboard.py",
"ba_data/python/bauiv1/ui/__init__.py",
"ba_data/python/bauiv1/ui/__pycache__/__init__.cpython-311.opt-1.pyc",

View File

@ -174,6 +174,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/babase/_text.py \
$(BUILD_DIR)/ba_data/python/babase/_workspace.py \
$(BUILD_DIR)/ba_data/python/babase/internal.py \
$(BUILD_DIR)/ba_data/python/babase/modutils.py \
$(BUILD_DIR)/ba_data/python/baclassic/__init__.py \
$(BUILD_DIR)/ba_data/python/baclassic/_accountv1.py \
$(BUILD_DIR)/ba_data/python/baclassic/_achievement.py \
@ -310,7 +311,6 @@ SCRIPT_TARGETS_PY_PUBLIC = \
$(BUILD_DIR)/ba_data/python/batemplatefs/_subsystem.py \
$(BUILD_DIR)/ba_data/python/bauiv1/__init__.py \
$(BUILD_DIR)/ba_data/python/bauiv1/_hooks.py \
$(BUILD_DIR)/ba_data/python/bauiv1/modutils.py \
$(BUILD_DIR)/ba_data/python/bauiv1/onscreenkeyboard.py \
$(BUILD_DIR)/ba_data/python/bauiv1/ui/__init__.py \
$(BUILD_DIR)/ba_data/python/bauiv1lib/__init__.py \
@ -446,6 +446,7 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
$(BUILD_DIR)/ba_data/python/babase/__pycache__/_text.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/babase/__pycache__/_workspace.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/babase/__pycache__/internal.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/babase/__pycache__/modutils.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/__init__.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_accountv1.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/baclassic/__pycache__/_achievement.cpython-311.opt-1.pyc \
@ -582,7 +583,6 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
$(BUILD_DIR)/ba_data/python/batemplatefs/__pycache__/_subsystem.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/__init__.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/_hooks.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/modutils.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1/__pycache__/onscreenkeyboard.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1/ui/__pycache__/__init__.cpython-311.opt-1.pyc \
$(BUILD_DIR)/ba_data/python/bauiv1lib/__pycache__/__init__.cpython-311.opt-1.pyc \

View File

@ -482,9 +482,12 @@ class App:
from babase import _asyncio
from babase import _appconfig
from babase._apputils import log_dumped_app_state, AppHealthMonitor
import babase._env
assert _babase.in_logic_thread()
babase._env.on_app_launching()
self._aioloop = _asyncio.setup_asyncio()
self.health_monitor = AppHealthMonitor()

View File

@ -64,8 +64,8 @@ def on_native_module_import() -> None:
def setup_env_for_app_run() -> None:
"""Set stuff such as interrupt handlers for a run of the app."""
import gc
import _babase
import baenv
import _babase
global _g_babase_app_started # pylint: disable=global-statement
@ -136,6 +136,21 @@ def setup_env_for_app_run() -> None:
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
def on_app_launching() -> None:
"""Called when the app reaches the launching state."""
import _babase
import baenv
assert _babase.in_logic_thread()
# Let the user know if the app python dir is a custom one.
if baenv.g_user_system_scripts_dir is not None:
_babase.screenmessage(
f"Using user system scripts: '{baenv.g_user_system_scripts_dir}'",
color=(0.6, 0.6, 1.0),
)
def _feed_logs_to_babase(log_handler: LogHandler) -> None:
"""Route log/print output to internal ballistica console/etc."""
import _babase

View File

@ -7,7 +7,6 @@ from typing import TYPE_CHECKING
import os
import _babase
import _bauiv1
if TYPE_CHECKING:
from typing import Sequence
@ -50,7 +49,7 @@ def _request_storage_permission() -> bool:
from babase._mgen.enums import Permission
if not _babase.have_permission(Permission.STORAGE):
_bauiv1.getsound('error').play()
_babase.getsimplesound('error').play()
_babase.screenmessage(
Lstr(resource='storagePermissionAccessText'), color=(1, 0, 0)
)
@ -103,7 +102,7 @@ def show_user_scripts() -> None:
# On a few platforms we try to open the dir in the UI.
if app.classic is not None and app.classic.platform in ['mac', 'windows']:
_bauiv1.open_dir_externally(app.python_directory_user)
_babase.open_dir_externally(app.python_directory_user)
# Otherwise we just print a pretty version of it.
else:
@ -111,9 +110,9 @@ def show_user_scripts() -> None:
def create_user_system_scripts() -> None:
"""Set up a copy of Ballistica system scripts under your user scripts dir.
"""Set up a copy of Ballistica app scripts under user scripts dir.
(for editing and experiment with)
(for editing and experimenting)
"""
import shutil
@ -180,7 +179,7 @@ def delete_user_system_scripts() -> None:
f' scripts. (use babase.quit() to exit the game)'
)
else:
print('User system scripts not found.')
print(f"User system scripts not found at '{path}'.")
# If the sys path is empty, kill it.
dpath = app.python_directory_user + '/sys'

View File

@ -59,7 +59,7 @@ def run_stress_test(
round_duration: int = 30,
) -> None:
"""Run a stress test."""
from bauiv1 import modutils
from babase import modutils
from babase._general import Call
_babase.screenmessage(

View File

@ -28,11 +28,12 @@ if TYPE_CHECKING:
# Build number and version of the ballistica binary we expect to be
# using.
TARGET_BALLISTICA_BUILD = 21078
TARGET_BALLISTICA_BUILD = 21079
TARGET_BALLISTICA_VERSION = '1.7.20'
_g_env_config: EnvConfig | None = None
g_paths_set_failed = False # pylint: disable=invalid-name
g_user_system_scripts_dir: str | None = None # pylint: disable=invalid-name
@dataclass
@ -43,6 +44,7 @@ class EnvConfig:
data_dir: str
user_python_dir: str | None
app_python_dir: str | None
standard_app_python_dir: str
site_python_dir: str | None
log_handler: LogHandler | None
@ -76,6 +78,7 @@ def configure(
affecting where those modules get loaded from.
"""
# pylint: disable=too-many-branches
# pylint: disable=too-many-locals
global _g_env_config # pylint: disable=global-statement
if _g_env_config is not None:
@ -125,6 +128,10 @@ def configure(
# Ok now Python paths.
# By default, app-python-dir is simply ba_data/python under
# data-dir.
standard_app_python_dir = str(Path(data_dir, 'ba_data', 'python'))
# If _babase has already been imported, there's not much we can do
# at this point aside from complain and inform for next time.
if '_babase' in sys.modules:
@ -141,10 +148,8 @@ def configure(
# Ok; _babase hasn't been imported yet so we can muck with
# Python paths.
# By default, app-python-dir is simply ba_data/python under
# data-dir.
if app_python_dir is None:
app_python_dir = str(Path(data_dir, 'ba_data', 'python'))
app_python_dir = standard_app_python_dir
# Likewise site-python-dir defaults to ba_data/python-site-packages.
if site_python_dir is None:
@ -156,7 +161,18 @@ def configure(
if user_python_dir is None:
user_python_dir = str(Path(config_dir, 'mods'))
# Ok, now add these to sys.path.
# Wherever our user_python_dir is, if we find a sys/FOO dir
# under it where FOO matches our version, use that as our
# app_python_dir.
check_dir = os.path.join(
user_python_dir, 'sys', TARGET_BALLISTICA_VERSION
)
if os.path.isdir(check_dir):
global g_user_system_scripts_dir # pylint: disable=global-statement
g_user_system_scripts_dir = check_dir
app_python_dir = check_dir
# Ok, now apply these to sys.path.
# First off, strip out any instances of the path containing this
# module. We will probably be re-adding the same path in a
@ -194,6 +210,7 @@ def configure(
data_dir=data_dir,
user_python_dir=user_python_dir,
app_python_dir=app_python_dir,
standard_app_python_dir=standard_app_python_dir,
site_python_dir=site_python_dir,
log_handler=log_handler,
)

View File

@ -188,7 +188,7 @@ class AdvancedSettingsWindow(bui.Window):
@staticmethod
def _preload_modules() -> None:
"""Preload modules we use (called in bg thread)."""
from bauiv1 import modutils as _unused2
from babase import modutils as _unused2
from bauiv1lib import config as _unused1
from bauiv1lib.settings import vrtesting as _unused3
from bauiv1lib.settings import nettesting as _unused4
@ -235,7 +235,7 @@ class AdvancedSettingsWindow(bui.Window):
# pylint: disable=too-many-locals
from bauiv1lib.config import ConfigCheckBox
from bauiv1.modutils import show_user_scripts
from babase.modutils import show_user_scripts
plus = bui.app.plus
assert plus is not None

View File

@ -207,6 +207,10 @@ static auto PyPushCall(PyObject* self, PyObject* args, PyObject* keywds)
return nullptr;
}
if (!g_base->logic->event_loop()) {
throw Exception("pushcall cannot be used before start-app is called.");
}
// 'raw' mode does no thread checking and no context saves/restores.
if (raw) {
assert(Python::HaveGIL());

View File

@ -1414,6 +1414,34 @@ static PyMethodDef PyNativeStackTraceDef = {
"Only use them for debugging.",
};
// -------------------------- open_dir_externally ------------------------------
static auto PyOpenDirExternally(PyObject* self, PyObject* args,
PyObject* keywds) -> PyObject* {
BA_PYTHON_TRY;
char* path = nullptr;
static const char* kwlist[] = {"path", nullptr};
if (!PyArg_ParseTupleAndKeywords(args, keywds, "s",
const_cast<char**>(kwlist), &path)) {
return nullptr;
}
g_core->platform->OpenDirExternally(path);
Py_RETURN_NONE;
BA_PYTHON_CATCH;
}
static PyMethodDef PyOpenDirExternallyDef = {
"open_dir_externally", // name
(PyCFunction)PyOpenDirExternally, // method
METH_VARARGS | METH_KEYWORDS, // flags
"open_dir_externally(path: str) -> None\n"
"\n"
"(internal)\n"
"\n"
"Open the provided dir in the default external app.",
};
// -----------------------------------------------------------------------------
auto PythonMethodsMisc::GetMethods() -> std::vector<PyMethodDef> {
@ -1468,6 +1496,7 @@ auto PythonMethodsMisc::GetMethods() -> std::vector<PyMethodDef> {
PyGetSimpleSoundDef,
PyHasTouchScreenDef,
PyNativeStackTraceDef,
PyOpenDirExternallyDef,
};
}

View File

@ -251,32 +251,6 @@ auto CorePlatform::GetDefaultVolatileDataDirectory() -> std::string {
auto CorePlatform::GetAppPythonDirectory() -> std::optional<std::string> {
BA_PRECONDITION(have_ba_env_vals_);
return ba_env_app_python_dir_;
// TODO(ericf) - recreate this behavior within baenv.
// // If there is a sys/VERSION in the user-python dir we use that.
// app_python_dir_ = GetUserPythonDirectoryMonolithicDefault() + BA_DIRSLASH
// + "sys" + BA_DIRSLASH + kEngineVersion;
// // Fall back to our default if that doesn't exist.
// if (FilePathExists(app_python_dir_)) {
// using_custom_app_python_dir_ = true;
// Log(LogLevel::kInfo,
// "Using custom app Python path: '"
// + (GetUserPythonDirectoryMonolithicDefault() + BA_DIRSLASH +
// "sys"
// + BA_DIRSLASH + kEngineVersion)
// + "'.");
// } else {
// // Special case: if CWD is '.', omit the './' for a prettier path.
// app_python_dir_ = std::string("ba_data") + BA_DIRSLASH + "python";
// auto data_dir = GetDataDirectoryMonolithicDefault();
// if (data_dir != ".") {
// app_python_dir_ = data_dir + BA_DIRSLASH + app_python_dir_;
// }
// }
// }
// return app_python_dir_;
}
auto CorePlatform::GetSitePythonDirectory() -> std::optional<std::string> {
@ -1250,6 +1224,14 @@ void CorePlatform::SetBaEnvVals(const PythonRef& ref) {
ba_env_site_python_dir_ =
ref.GetAttr("site_python_dir").ValueAsOptionalString();
// Consider app-python-dir 'custom' if baenv provided a value
// for it AND that value differs from baenv's default.
auto standard_app_python_dir =
ref.GetAttr("standard_app_python_dir").ValueAsString();
using_custom_app_python_dir_ =
ba_env_app_python_dir_.has_value()
&& *ba_env_app_python_dir_ != standard_app_python_dir;
// Ok, now look for the existence of ba_data in the dir we've got.
auto fullpath = ba_env_data_dir_ + BA_DIRSLASH + "ba_data";
if (!FilePathExists(fullpath)) {

View File

@ -546,7 +546,7 @@ class CorePlatform {
private:
bool is_stdin_a_terminal_{};
bool using_custom_app_python_dir_{}; // FIXME not wired up currently.
bool using_custom_app_python_dir_{};
bool have_has_touchscreen_value_{};
bool have_touchscreen_{};
bool is_tegra_k1_{};

View File

@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kEngineBuildNumber = 21078;
const int kEngineBuildNumber = 21079;
const char* kEngineVersion = "1.7.20";
auto MonolithicMain(const core::CoreConfig& core_config) -> int {

View File

@ -2799,34 +2799,6 @@ static PyMethodDef PyOpenFileExternallyDef = {
"Open the provided file in the default external app.",
};
// -------------------------- open_dir_externally ------------------------------
static auto PyOpenDirExternally(PyObject* self, PyObject* args,
PyObject* keywds) -> PyObject* {
BA_PYTHON_TRY;
char* path = nullptr;
static const char* kwlist[] = {"path", nullptr};
if (!PyArg_ParseTupleAndKeywords(args, keywds, "s",
const_cast<char**>(kwlist), &path)) {
return nullptr;
}
g_core->platform->OpenDirExternally(path);
Py_RETURN_NONE;
BA_PYTHON_CATCH;
}
static PyMethodDef PyOpenDirExternallyDef = {
"open_dir_externally", // name
(PyCFunction)PyOpenDirExternally, // method
METH_VARARGS | METH_KEYWORDS, // flags
"open_dir_externally(path: str) -> None\n"
"\n"
"(internal)\n"
"\n"
"Open the provided dir in the default external app.",
};
// ----------------------------- console_print ---------------------------------
static auto PyConsolePrint(PyObject* self, PyObject* args) -> PyObject* {
@ -2899,7 +2871,6 @@ auto PythonMethodsUIV1::GetMethods() -> std::vector<PyMethodDef> {
PyGetQRCodeTextureDef,
PyIsPartyIconVisibleDef,
PyConsolePrintDef,
PyOpenDirExternallyDef,
PyOpenFileExternallyDef,
PyOpenURLDef,
PyBackPressDef,