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.
Files changed (14) hide show
  1. {vertexengine_webengine-1.2rc1/src/VertexEngine_WebEngine.egg-info → vertexengine_webengine-1.2rc2}/PKG-INFO +4 -2
  2. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/README.md +3 -1
  3. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/pyproject.toml +1 -1
  4. vertexengine_webengine-1.2rc2/src/VertexEngine/VertexWebEngineCore/JSBridge.py +101 -0
  5. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine/VertexWebEngineWidgets/EngineView.py +0 -1
  6. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2/src/VertexEngine_WebEngine.egg-info}/PKG-INFO +4 -2
  7. vertexengine_webengine-1.2rc1/src/VertexEngine/VertexWebEngineCore/JSBridge.py +0 -17
  8. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/LICENSE +0 -0
  9. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/setup.cfg +0 -0
  10. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine/VertexWebEngineCore/WebScene.py +0 -0
  11. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/SOURCES.txt +0 -0
  12. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/dependency_links.txt +0 -0
  13. {vertexengine_webengine-1.2rc1 → vertexengine_webengine-1.2rc2}/src/VertexEngine_WebEngine.egg-info/requires.txt +0 -0
  14. {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.2rc1
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.2rc1), NEW!
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.2rc1), NEW!
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.2rc1"
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,5 @@
1
1
  from PyQt6.QtWebEngineWidgets import QWebEngineView
2
2
  from PyQt6.QtWebChannel import QWebChannel
3
-
4
3
  from VertexWebEngineCore.WebScene import SceneManager
5
4
  from VertexWebEngineCore.JSBridge import JSBridge
6
5
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: VertexEngine-WebEngine
3
- Version: 1.2rc1
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.2rc1), NEW!
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)