pyloid 0.15.0__py3-none-any.whl → 0.15.2__py3-none-any.whl
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.
pyloid/browser_window.py
CHANGED
@@ -10,7 +10,7 @@ from PySide6.QtGui import (
|
|
10
10
|
QShortcut,
|
11
11
|
QCursor,
|
12
12
|
)
|
13
|
-
from PySide6.QtCore import Qt, QPoint, QUrl, QEvent
|
13
|
+
from PySide6.QtCore import Qt, QPoint, QUrl, QEvent, QFile
|
14
14
|
from PySide6.QtWebEngineCore import QWebEnginePage, QWebEngineSettings
|
15
15
|
from .api import PyloidAPI
|
16
16
|
import uuid
|
@@ -24,7 +24,6 @@ from .custom.titlebar import CustomTitleBar
|
|
24
24
|
from .js_api.window_api import WindowAPI
|
25
25
|
|
26
26
|
|
27
|
-
|
28
27
|
# 어차피 load 부분에만 쓰이니까 나중에 분리해서 load 위에서 선언하자.
|
29
28
|
class CustomWebEngineView(QWebEngineView):
|
30
29
|
def __init__(self, parent=None):
|
@@ -40,7 +39,7 @@ class CustomWebEngineView(QWebEngineView):
|
|
40
39
|
|
41
40
|
def mouse_press_event(self, event):
|
42
41
|
if event.button() == Qt.LeftButton:
|
43
|
-
self.drag_relative_position = event.pos()
|
42
|
+
self.drag_relative_position = event.globalPos() - self.parent._window.pos()
|
44
43
|
if not self.parent.frame and self.is_resizing_enabled:
|
45
44
|
self.resize_direction = self.get_resize_direction(event.pos())
|
46
45
|
if self.resize_direction:
|
@@ -103,47 +102,56 @@ class CustomWebEngineView(QWebEngineView):
|
|
103
102
|
return super().eventFilter(source, event)
|
104
103
|
|
105
104
|
def get_resize_direction(self, pos):
|
106
|
-
if
|
105
|
+
if (
|
106
|
+
not self.parent.frame and self.is_resizing_enabled
|
107
|
+
): # Check if frame is not present and resizing is enabled
|
107
108
|
margin = 5 # Margin in pixels to detect edge
|
108
109
|
rect = self.rect()
|
109
110
|
direction = None
|
110
111
|
|
111
112
|
if pos.x() <= margin:
|
112
|
-
direction =
|
113
|
+
direction = "left"
|
113
114
|
elif pos.x() >= rect.width() - margin:
|
114
|
-
direction =
|
115
|
+
direction = "right"
|
115
116
|
|
116
117
|
if pos.y() <= margin:
|
117
|
-
direction =
|
118
|
+
direction = "top" if direction is None else direction + "-top"
|
118
119
|
elif pos.y() >= rect.height() - margin:
|
119
|
-
direction =
|
120
|
+
direction = "bottom" if direction is None else direction + "-bottom"
|
120
121
|
|
121
122
|
return direction
|
122
123
|
return None
|
123
124
|
|
124
125
|
def set_cursor_for_resize_direction(self, direction):
|
125
|
-
if
|
126
|
-
|
126
|
+
if (
|
127
|
+
not self.parent.frame and direction and self.is_resizing_enabled
|
128
|
+
): # Check if frame is not present and resizing is enabled
|
129
|
+
if direction in ["left", "right"]:
|
127
130
|
self.setCursor(Qt.SizeHorCursor)
|
128
|
-
elif direction in [
|
131
|
+
elif direction in ["top", "bottom"]:
|
129
132
|
self.setCursor(Qt.SizeVerCursor)
|
130
|
-
elif direction in [
|
133
|
+
elif direction in ["left-top", "right-bottom"]:
|
131
134
|
self.setCursor(Qt.SizeFDiagCursor)
|
132
|
-
elif direction in [
|
135
|
+
elif direction in ["right-top", "left-bottom"]:
|
133
136
|
self.setCursor(Qt.SizeBDiagCursor)
|
134
137
|
|
135
138
|
def resize_window(self, global_pos):
|
136
|
-
if
|
139
|
+
if (
|
140
|
+
not self.parent.frame
|
141
|
+
and self.resize_start_pos
|
142
|
+
and self.resize_direction
|
143
|
+
and self.is_resizing_enabled
|
144
|
+
): # Check if frame is not present and resizing is enabled
|
137
145
|
delta = global_pos - self.resize_start_pos
|
138
146
|
new_geometry = self.parent._window.geometry()
|
139
147
|
|
140
|
-
if
|
148
|
+
if "left" in self.resize_direction:
|
141
149
|
new_geometry.setLeft(new_geometry.left() + delta.x())
|
142
|
-
if
|
150
|
+
if "right" in self.resize_direction:
|
143
151
|
new_geometry.setRight(new_geometry.right() + delta.x())
|
144
|
-
if
|
152
|
+
if "top" in self.resize_direction:
|
145
153
|
new_geometry.setTop(new_geometry.top() + delta.y())
|
146
|
-
if
|
154
|
+
if "bottom" in self.resize_direction:
|
147
155
|
new_geometry.setBottom(new_geometry.bottom() + delta.y())
|
148
156
|
|
149
157
|
self.parent._window.setGeometry(new_geometry)
|
@@ -278,6 +286,14 @@ class BrowserWindow:
|
|
278
286
|
def _on_load_finished(self, ok):
|
279
287
|
"""Handles the event when the web page finishes loading."""
|
280
288
|
if ok and self.js_apis:
|
289
|
+
|
290
|
+
# Load qwebchannel.js
|
291
|
+
qwebchannel_js = QFile("://qtwebchannel/qwebchannel.js")
|
292
|
+
if qwebchannel_js.open(QFile.ReadOnly):
|
293
|
+
source = bytes(qwebchannel_js.readAll()).decode("utf-8")
|
294
|
+
self.web_view.page().runJavaScript(source)
|
295
|
+
qwebchannel_js.close()
|
296
|
+
|
281
297
|
js_code = """
|
282
298
|
if (typeof QWebChannel !== 'undefined') {
|
283
299
|
new QWebChannel(qt.webChannelTransport, function (channel) {
|
@@ -702,7 +718,7 @@ class BrowserWindow:
|
|
702
718
|
def is_fullscreen(self) -> bool:
|
703
719
|
"""
|
704
720
|
Returns True if the window is fullscreen.
|
705
|
-
|
721
|
+
|
706
722
|
Examples
|
707
723
|
--------
|
708
724
|
>>> app = Pyloid(app_name="Pyloid-App")
|
@@ -1062,7 +1078,7 @@ class BrowserWindow:
|
|
1062
1078
|
```
|
1063
1079
|
"""
|
1064
1080
|
return self._window.isVisible()
|
1065
|
-
|
1081
|
+
|
1066
1082
|
def get_frame(self) -> bool:
|
1067
1083
|
"""
|
1068
1084
|
Returns the frame enabled state of the window.
|
@@ -1085,7 +1101,7 @@ class BrowserWindow:
|
|
1085
1101
|
```
|
1086
1102
|
"""
|
1087
1103
|
return self.frame
|
1088
|
-
|
1104
|
+
|
1089
1105
|
###########################################################################################
|
1090
1106
|
# Resize
|
1091
1107
|
###########################################################################################
|
@@ -1192,7 +1208,10 @@ class BrowserWindow:
|
|
1192
1208
|
app.run()
|
1193
1209
|
```
|
1194
1210
|
"""
|
1195
|
-
return {
|
1211
|
+
return {
|
1212
|
+
"width": self._window.minimumWidth(),
|
1213
|
+
"height": self._window.minimumHeight(),
|
1214
|
+
}
|
1196
1215
|
|
1197
1216
|
def get_maximum_size(self) -> Dict[str, int]:
|
1198
1217
|
"""
|
@@ -1215,8 +1234,11 @@ class BrowserWindow:
|
|
1215
1234
|
app.run()
|
1216
1235
|
```
|
1217
1236
|
"""
|
1218
|
-
return {
|
1219
|
-
|
1237
|
+
return {
|
1238
|
+
"width": self._window.maximumWidth(),
|
1239
|
+
"height": self._window.maximumHeight(),
|
1240
|
+
}
|
1241
|
+
|
1220
1242
|
def get_resizable(self) -> bool:
|
1221
1243
|
"""
|
1222
1244
|
Returns the resizability of the window.
|
@@ -1238,4 +1260,33 @@ class BrowserWindow:
|
|
1238
1260
|
app.run()
|
1239
1261
|
```
|
1240
1262
|
"""
|
1241
|
-
return self.resizable
|
1263
|
+
return self.resizable
|
1264
|
+
|
1265
|
+
###########################################################################################
|
1266
|
+
# Custom Pyside6 Features
|
1267
|
+
###########################################################################################
|
1268
|
+
def get_QMainWindow(self) -> QMainWindow:
|
1269
|
+
"""
|
1270
|
+
Returns the QMainWindow object of the window.
|
1271
|
+
you can use all the features of QMainWindow for customizing the window.
|
1272
|
+
|
1273
|
+
Returns
|
1274
|
+
-------
|
1275
|
+
QMainWindow
|
1276
|
+
QMainWindow object of the window
|
1277
|
+
|
1278
|
+
Examples
|
1279
|
+
--------
|
1280
|
+
```python
|
1281
|
+
from PySide6.QtCore import Qt
|
1282
|
+
from pyloid import Pyloid
|
1283
|
+
|
1284
|
+
app = Pyloid(app_name="Pyloid-App")
|
1285
|
+
|
1286
|
+
window = app.create_window("pyloid-window")
|
1287
|
+
qmain = window.get_QMainWindow()
|
1288
|
+
|
1289
|
+
qmain.setWindowFlags(qmain.windowFlags() | Qt.WindowStaysOnTopHint) # window stays on top
|
1290
|
+
```
|
1291
|
+
"""
|
1292
|
+
return self._window
|
@@ -198,4 +198,4 @@ Apache License
|
|
198
198
|
distributed under the License is distributed on an "AS IS" BASIS,
|
199
199
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
200
200
|
See the License for the specific language governing permissions and
|
201
|
-
limitations under the License.
|
201
|
+
limitations under the License.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
pyloid/__init__.py,sha256=OOPhOKNQVmAM8hnfTeE7lHzxb8LsFNcgegBAvDrA-vY,293
|
2
2
|
pyloid/api.py,sha256=np0pFVUlen_GpN0svY0A3awY_ZjVFk-RpHQZZKFUMuo,2157
|
3
3
|
pyloid/autostart.py,sha256=K7DQYl4LHItvPp0bt1V9WwaaZmVSTeGvadkcwG-KKrI,3899
|
4
|
-
pyloid/browser_window.py,sha256=
|
4
|
+
pyloid/browser_window.py,sha256=xN2FbpMMwPAg1LIEdQs7DxIZT9VO8uvT2xKieADRwKs,40470
|
5
5
|
pyloid/custom/titlebar.py,sha256=itzK9pJbZMQ7BKca9kdbuHMffurrw15UijR6OU03Xsk,3894
|
6
6
|
pyloid/filewatcher.py,sha256=3M5zWVUf1OhlkWJcDFC8ZA9agO4Q-U8WdgGpy6kaVz0,4601
|
7
7
|
pyloid/js_api/event_api.py,sha256=_52yyBonqecmMvJpFW7OMNi_jX8Nrteqw_kI6r-DGG0,951
|
@@ -11,7 +11,7 @@ pyloid/pyloid.py,sha256=3YymePkpM_hKPzvHSSgELuSHkmbDsKW60HnRwwBMY7A,41178
|
|
11
11
|
pyloid/timer.py,sha256=RqMsChFUd93cxMVgkHWiIKrci0QDTBgJSTULnAtYT8M,8712
|
12
12
|
pyloid/tray.py,sha256=D12opVEc2wc2T4tK9epaN1oOdeziScsIVNM2uCN7C-A,1710
|
13
13
|
pyloid/utils.py,sha256=VGZE2liY8_AElEqxVe1YLbk3fWlcAevpRc6oOTTgi-U,1927
|
14
|
-
pyloid-0.15.
|
15
|
-
pyloid-0.15.
|
16
|
-
pyloid-0.15.
|
17
|
-
pyloid-0.15.
|
14
|
+
pyloid-0.15.2.dist-info/LICENSE,sha256=MTYF-6xpRekyTUglRweWtbfbwBL1I_3Bgfbm_SNOuI8,11525
|
15
|
+
pyloid-0.15.2.dist-info/METADATA,sha256=I-d7qNTJKvkAfAHmJrEzHKr-o6UIJZ320YjQJGNMHc8,3050
|
16
|
+
pyloid-0.15.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
17
|
+
pyloid-0.15.2.dist-info/RECORD,,
|
File without changes
|