VertexEngine-WebEngine 1.2rc1__tar.gz → 1.2rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vertexengine_webengine-1.2rc1/src/VertexEngine_WebEngine.egg-info → vertexengine_webengine-1.2rc2}/PKG-INFO +4 -2
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/README.md +3 -1
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/pyproject.toml +1 -1
- vertexengine_webengine-1.2rc2/src/VertexEngine/VertexWebEngineCore/JSBridge.py +101 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine/VertexWebEngineWidgets/EngineView.py +0 -1
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2/src/VertexEngine_WebEngine.egg-info}/PKG-INFO +4 -2
- vertexengine_webengine-1.2rc1/src/VertexEngine/VertexWebEngineCore/JSBridge.py +0 -17
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/LICENSE +0 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/setup.cfg +0 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine/VertexWebEngineCore/WebScene.py +0 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/SOURCES.txt +0 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/dependency_links.txt +0 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/requires.txt +0 -0
- {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: VertexEngine-WebEngine
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2rc2
|
|
4
4
|
Summary: The offical WebEngine Extension of the VertexEngine SDK.
|
|
5
5
|
Author-email: Tyrel Miguel <annbasilan0828@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -22,7 +22,9 @@ VertexEngine-WebEngine is a WebEngine built for the VertexEngine SDK. It's a sep
|
|
|
22
22
|
The documentation is in the following link:
|
|
23
23
|
[Project Documentation](https://vertexenginedocs.netlify.app/) for help.
|
|
24
24
|
|
|
25
|
-
## Change Logs (1.
|
|
25
|
+
## Change Logs (1.2rc2), NEW!
|
|
26
|
+
### 1.2rc2
|
|
27
|
+
- EXPANDED JS BRIDGE!
|
|
26
28
|
### 1.2rc1
|
|
27
29
|
- FULL ENGINE REVAMP! Check Documentation for more details.
|
|
28
30
|
### Version 1.1
|
|
@@ -5,7 +5,9 @@ VertexEngine-WebEngine is a WebEngine built for the VertexEngine SDK. It's a sep
|
|
|
5
5
|
The documentation is in the following link:
|
|
6
6
|
[Project Documentation](https://vertexenginedocs.netlify.app/) for help.
|
|
7
7
|
|
|
8
|
-
## Change Logs (1.
|
|
8
|
+
## Change Logs (1.2rc2), NEW!
|
|
9
|
+
### 1.2rc2
|
|
10
|
+
- EXPANDED JS BRIDGE!
|
|
9
11
|
### 1.2rc1
|
|
10
12
|
- FULL ENGINE REVAMP! Check Documentation for more details.
|
|
11
13
|
### Version 1.1
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "VertexEngine-WebEngine"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.2rc2"
|
|
8
8
|
description = "The offical WebEngine Extension of the VertexEngine SDK."
|
|
9
9
|
authors = [
|
|
10
10
|
{ name="Tyrel Miguel", email="annbasilan0828@gmail.com" }
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
from PyQt6.QtCore import QObject, pyqtSlot, pyqtSignal, QTimer
|
|
2
|
+
import json
|
|
3
|
+
import functools
|
|
4
|
+
|
|
5
|
+
class JSBridge(QObject):
|
|
6
|
+
# Core signals
|
|
7
|
+
eventReceived = pyqtSignal(str, str) # eventName, jsonData
|
|
8
|
+
logMessage = pyqtSignal(str)
|
|
9
|
+
|
|
10
|
+
def __init__(self, scene_manager):
|
|
11
|
+
super().__init__()
|
|
12
|
+
self.scene_manager = scene_manager
|
|
13
|
+
self._event_listeners = {} # Python-side listeners
|
|
14
|
+
self._timers = []
|
|
15
|
+
|
|
16
|
+
# -----------------------
|
|
17
|
+
# Scene management
|
|
18
|
+
# -----------------------
|
|
19
|
+
@pyqtSlot(str)
|
|
20
|
+
def loadScene(self, name):
|
|
21
|
+
print("🎮 JS Requested Scene:", name)
|
|
22
|
+
self.scene_manager.load_scene(name)
|
|
23
|
+
self.emitEvent("sceneChanged", {"name": name})
|
|
24
|
+
|
|
25
|
+
@pyqtSlot(result=str)
|
|
26
|
+
def getCurrentScene(self):
|
|
27
|
+
return self.scene_manager.current_scene
|
|
28
|
+
|
|
29
|
+
# -----------------------
|
|
30
|
+
# Event system
|
|
31
|
+
# -----------------------
|
|
32
|
+
@pyqtSlot(str, str)
|
|
33
|
+
def emitEvent(self, event_name, json_data="{}"):
|
|
34
|
+
"""Emit event to Python listeners and JS"""
|
|
35
|
+
try:
|
|
36
|
+
data = json.loads(json_data)
|
|
37
|
+
except json.JSONDecodeError:
|
|
38
|
+
data = {"raw": json_data}
|
|
39
|
+
|
|
40
|
+
# Python-side listeners
|
|
41
|
+
listeners = self._event_listeners.get(event_name, [])
|
|
42
|
+
for callback in listeners:
|
|
43
|
+
callback(data)
|
|
44
|
+
|
|
45
|
+
# Emit signal to JS
|
|
46
|
+
self.eventReceived.emit(event_name, json.dumps(data))
|
|
47
|
+
print(f"✨ Event emitted: {event_name} → {data}")
|
|
48
|
+
|
|
49
|
+
def onEvent(self, event_name, callback):
|
|
50
|
+
"""Register Python listener"""
|
|
51
|
+
if event_name not in self._event_listeners:
|
|
52
|
+
self._event_listeners[event_name] = []
|
|
53
|
+
self._event_listeners[event_name].append(callback)
|
|
54
|
+
print(f"✅ Python listener registered for '{event_name}'")
|
|
55
|
+
|
|
56
|
+
# -----------------------
|
|
57
|
+
# Logging
|
|
58
|
+
# -----------------------
|
|
59
|
+
@pyqtSlot(str)
|
|
60
|
+
def jsLog(self, message):
|
|
61
|
+
print("📝 JS Log:", message)
|
|
62
|
+
self.logMessage.emit(message)
|
|
63
|
+
|
|
64
|
+
# -----------------------
|
|
65
|
+
# Data exchange
|
|
66
|
+
# -----------------------
|
|
67
|
+
@pyqtSlot(str)
|
|
68
|
+
def sendData(self, json_data):
|
|
69
|
+
try:
|
|
70
|
+
data = json.loads(json_data)
|
|
71
|
+
print("📥 Received data from JS:", data)
|
|
72
|
+
self.emitEvent("dataReceived", json_data)
|
|
73
|
+
except json.JSONDecodeError:
|
|
74
|
+
print("❌ Invalid JSON received from JS")
|
|
75
|
+
|
|
76
|
+
def updateSceneData(self, data_dict):
|
|
77
|
+
json_str = json.dumps(data_dict)
|
|
78
|
+
self.emitEvent("sceneDataUpdated", json_str)
|
|
79
|
+
|
|
80
|
+
# -----------------------
|
|
81
|
+
# Timers / delayed calls
|
|
82
|
+
# -----------------------
|
|
83
|
+
@pyqtSlot(str, int)
|
|
84
|
+
def delayedCall(self, callback_event, delay_ms):
|
|
85
|
+
"""Call an event after delay (ms)"""
|
|
86
|
+
timer = QTimer(self)
|
|
87
|
+
timer.setSingleShot(True)
|
|
88
|
+
timer.timeout.connect(functools.partial(self.emitEvent, callback_event))
|
|
89
|
+
timer.start(delay_ms)
|
|
90
|
+
self._timers.append(timer)
|
|
91
|
+
print(f"⏱ Scheduled delayed event '{callback_event}' in {delay_ms}ms")
|
|
92
|
+
|
|
93
|
+
# -----------------------
|
|
94
|
+
# Dynamic JS loading
|
|
95
|
+
# -----------------------
|
|
96
|
+
@pyqtSlot(str, result=str)
|
|
97
|
+
def loadJSModule(self, url):
|
|
98
|
+
"""Return the URL to JS for dynamic import (for WebEngine to fetch)"""
|
|
99
|
+
print(f"🌐 JS requested module: {url}")
|
|
100
|
+
# In practice, the JS will do: import(moduleURL)
|
|
101
|
+
return url
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: VertexEngine-WebEngine
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2rc2
|
|
4
4
|
Summary: The offical WebEngine Extension of the VertexEngine SDK.
|
|
5
5
|
Author-email: Tyrel Miguel <annbasilan0828@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -22,7 +22,9 @@ VertexEngine-WebEngine is a WebEngine built for the VertexEngine SDK. It's a sep
|
|
|
22
22
|
The documentation is in the following link:
|
|
23
23
|
[Project Documentation](https://vertexenginedocs.netlify.app/) for help.
|
|
24
24
|
|
|
25
|
-
## Change Logs (1.
|
|
25
|
+
## Change Logs (1.2rc2), NEW!
|
|
26
|
+
### 1.2rc2
|
|
27
|
+
- EXPANDED JS BRIDGE!
|
|
26
28
|
### 1.2rc1
|
|
27
29
|
- FULL ENGINE REVAMP! Check Documentation for more details.
|
|
28
30
|
### Version 1.1
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
from PyQt6.QtCore import QObject, pyqtSlot, pyqtSignal
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class JSBridge(QObject):
|
|
5
|
-
|
|
6
|
-
sceneChanged = pyqtSignal(str)
|
|
7
|
-
|
|
8
|
-
def __init__(self, scene_manager):
|
|
9
|
-
super().__init__()
|
|
10
|
-
self.scene_manager = scene_manager
|
|
11
|
-
|
|
12
|
-
@pyqtSlot(str)
|
|
13
|
-
def loadScene(self, name):
|
|
14
|
-
print("🎮 JS Requested Scene:", name)
|
|
15
|
-
|
|
16
|
-
self.scene_manager.load_scene(name)
|
|
17
|
-
self.sceneChanged.emit(name)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|