pyloid 0.11.4__py3-none-any.whl → 0.11.5__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
pyloid/pyloid.py
CHANGED
@@ -18,7 +18,7 @@ from PySide6.QtGui import (
|
|
18
18
|
QPalette,
|
19
19
|
QColor,
|
20
20
|
)
|
21
|
-
from PySide6.QtCore import Qt, Signal, QUrl, QObject, QTimer
|
21
|
+
from PySide6.QtCore import Qt, Signal, QPoint, QUrl, QObject, QTimer, QSize
|
22
22
|
from PySide6.QtNetwork import QLocalServer, QLocalSocket
|
23
23
|
from PySide6.QtWebEngineCore import QWebEnginePage, QWebEngineSettings
|
24
24
|
from .api import PyloidAPI, Bridge
|
@@ -32,7 +32,9 @@ import json
|
|
32
32
|
from .autostart import AutoStart
|
33
33
|
from .filewatcher import FileWatcher
|
34
34
|
import logging
|
35
|
-
from PySide6.
|
35
|
+
from PySide6.QtGui import QPalette, QColor
|
36
|
+
from PySide6.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QHBoxLayout, QSizePolicy
|
37
|
+
from PySide6.QtGui import QPixmap
|
36
38
|
|
37
39
|
# for linux debug
|
38
40
|
os.environ["QTWEBENGINE_DICTIONARIES_PATH"] = "/"
|
@@ -243,6 +245,106 @@ class WindowAPI(PyloidAPI):
|
|
243
245
|
# callback(*args, **kwargs)
|
244
246
|
|
245
247
|
|
248
|
+
class CustomTitleBar(QWidget):
|
249
|
+
def __init__(self, parent=None):
|
250
|
+
super().__init__(parent)
|
251
|
+
self.layout = QHBoxLayout(self)
|
252
|
+
self.layout.setContentsMargins(5, 0, 5, 0)
|
253
|
+
self.layout.setSpacing(0)
|
254
|
+
|
255
|
+
self.icon_label = QLabel()
|
256
|
+
self.icon_label.setFixedSize(20, 20)
|
257
|
+
self.title = QLabel("Custom Title")
|
258
|
+
|
259
|
+
self.minimize_button = QPushButton("-")
|
260
|
+
self.maximize_button = QPushButton("❐")
|
261
|
+
self.close_button = QPushButton("×")
|
262
|
+
|
263
|
+
for button in (self.minimize_button, self.maximize_button, self.close_button):
|
264
|
+
button.setFixedSize(45, 30)
|
265
|
+
button.setFlat(True)
|
266
|
+
|
267
|
+
self.layout.addWidget(self.icon_label)
|
268
|
+
self.layout.addSpacing(5)
|
269
|
+
self.layout.addWidget(self.title)
|
270
|
+
self.layout.addStretch(1)
|
271
|
+
self.layout.addWidget(self.minimize_button)
|
272
|
+
self.layout.addWidget(self.maximize_button)
|
273
|
+
self.layout.addWidget(self.close_button)
|
274
|
+
|
275
|
+
self.minimize_button.clicked.connect(self.window().showMinimized)
|
276
|
+
self.maximize_button.clicked.connect(self.toggle_maximize)
|
277
|
+
self.close_button.clicked.connect(self.window().close)
|
278
|
+
|
279
|
+
self.setFixedHeight(30)
|
280
|
+
self.set_style("darkblue", "white")
|
281
|
+
|
282
|
+
def set_style(self, bg_color, text_color):
|
283
|
+
self.setAutoFillBackground(True)
|
284
|
+
palette = self.palette()
|
285
|
+
bg_qcolor = QColor(bg_color)
|
286
|
+
text_qcolor = QColor(text_color)
|
287
|
+
palette.setColor(QPalette.Window, bg_qcolor)
|
288
|
+
palette.setColor(QPalette.WindowText, text_qcolor)
|
289
|
+
self.setPalette(palette)
|
290
|
+
|
291
|
+
self.title.setStyleSheet(f"color: {text_color}; font-weight: bold;")
|
292
|
+
|
293
|
+
button_style = f"""
|
294
|
+
QPushButton {{
|
295
|
+
background-color: {bg_color};
|
296
|
+
color: {text_color};
|
297
|
+
border: none;
|
298
|
+
font-family: Arial;
|
299
|
+
font-size: 14px;
|
300
|
+
padding: 0px;
|
301
|
+
text-align: center;
|
302
|
+
}}
|
303
|
+
QPushButton:hover {{
|
304
|
+
background-color: {bg_qcolor.lighter(120).name()};
|
305
|
+
}}
|
306
|
+
QPushButton:pressed {{
|
307
|
+
background-color: {bg_qcolor.darker(110).name()};
|
308
|
+
}}
|
309
|
+
"""
|
310
|
+
for button in (self.minimize_button, self.maximize_button, self.close_button):
|
311
|
+
button.setStyleSheet(button_style)
|
312
|
+
|
313
|
+
self.close_button.setStyleSheet(button_style + f"""
|
314
|
+
QPushButton:hover {{
|
315
|
+
background-color: #e81123;
|
316
|
+
color: white;
|
317
|
+
}}
|
318
|
+
""")
|
319
|
+
|
320
|
+
def mousePressEvent(self, event):
|
321
|
+
if event.button() == Qt.LeftButton:
|
322
|
+
self.window().moving = True
|
323
|
+
self.window().offset = event.pos()
|
324
|
+
|
325
|
+
def mouseMoveEvent(self, event):
|
326
|
+
if self.window().moving:
|
327
|
+
self.window().move(event.globalPos() - self.window().offset)
|
328
|
+
|
329
|
+
def mouseReleaseEvent(self, event):
|
330
|
+
if event.button() == Qt.LeftButton:
|
331
|
+
self.window().moving = False
|
332
|
+
|
333
|
+
def toggle_maximize(self):
|
334
|
+
if self.window().isMaximized():
|
335
|
+
self.window().showNormal()
|
336
|
+
self.maximize_button.setText("❐")
|
337
|
+
else:
|
338
|
+
self.window().showMaximized()
|
339
|
+
self.maximize_button.setText("❐")
|
340
|
+
|
341
|
+
def set_icon(self, icon_path):
|
342
|
+
pixmap = QPixmap(icon_path)
|
343
|
+
self.icon_label.setPixmap(pixmap.scaled(20, 20, Qt.KeepAspectRatio, Qt.SmoothTransformation))
|
344
|
+
|
345
|
+
def set_title(self, title):
|
346
|
+
self.title.setText(title)
|
347
|
+
|
246
348
|
class BrowserWindow:
|
247
349
|
def __init__(
|
248
350
|
self,
|
@@ -280,6 +382,37 @@ class BrowserWindow:
|
|
280
382
|
self.shortcuts = {}
|
281
383
|
###########################################################################################
|
282
384
|
|
385
|
+
def set_custom_frame(self, use_custom: bool, title: str = "Custom Title", bg_color: str = "darkblue", text_color: str = "white", icon_path: str = None):
|
386
|
+
"""커스텀 프레임을 설정하거나 제거합니다."""
|
387
|
+
if use_custom:
|
388
|
+
self._window.setWindowFlags(Qt.FramelessWindowHint)
|
389
|
+
self.custom_title_bar = CustomTitleBar(self._window)
|
390
|
+
self.custom_title_bar.set_style(bg_color, text_color)
|
391
|
+
self.custom_title_bar.set_title(title)
|
392
|
+
|
393
|
+
if icon_path:
|
394
|
+
self.custom_title_bar.set_icon(icon_path)
|
395
|
+
|
396
|
+
layout = QVBoxLayout()
|
397
|
+
layout.setContentsMargins(0, 0, 0, 0)
|
398
|
+
layout.setSpacing(0)
|
399
|
+
layout.addWidget(self.custom_title_bar)
|
400
|
+
layout.addWidget(self.web_view)
|
401
|
+
|
402
|
+
central_widget = QWidget()
|
403
|
+
central_widget.setLayout(layout)
|
404
|
+
self._window.setCentralWidget(central_widget)
|
405
|
+
|
406
|
+
# 창 이동을 위한 속성 추가
|
407
|
+
self._window.moving = False
|
408
|
+
self._window.offset = QPoint()
|
409
|
+
else:
|
410
|
+
self._window.setWindowFlags(Qt.Window)
|
411
|
+
self._window.setCentralWidget(self.web_view)
|
412
|
+
self.custom_title_bar = None
|
413
|
+
|
414
|
+
self._window.show()
|
415
|
+
|
283
416
|
def _load(self):
|
284
417
|
self._window.setWindowTitle(self.title)
|
285
418
|
|
@@ -643,9 +776,15 @@ class BrowserWindow:
|
|
643
776
|
"""Returns the visibility of the window."""
|
644
777
|
return self._window.isVisible()
|
645
778
|
|
779
|
+
def set_resizable(self, resizable: bool):
|
780
|
+
"""창의 크기 조절 가능 여부를 설정합니다."""
|
781
|
+
self.resizable = resizable
|
782
|
+
if resizable:
|
783
|
+
self._window.setWindowFlags(self._window.windowFlags() & ~Qt.MSWindowsFixedSizeDialogHint)
|
784
|
+
else:
|
785
|
+
self._window.setWindowFlags(self._window.windowFlags() | Qt.MSWindowsFixedSizeDialogHint)
|
786
|
+
self._window.show() # 변경사항을 적용하기 위해 창을 다시 표시합니다.
|
646
787
|
|
647
|
-
|
648
|
-
|
649
788
|
|
650
789
|
class _WindowController(QObject):
|
651
790
|
create_window_signal = Signal(
|
@@ -3,11 +3,11 @@ pyloid/api.py,sha256=whgfvPr1A6iwZ1Ewo-0FnOUNnt1K58c-P7YjzuQHcUM,194
|
|
3
3
|
pyloid/autostart.py,sha256=K7DQYl4LHItvPp0bt1V9WwaaZmVSTeGvadkcwG-KKrI,3899
|
4
4
|
pyloid/filewatcher.py,sha256=n8N56D65le5TpsgxXb7z-FO_0lqv4UYD4yGq_UuMrAs,1285
|
5
5
|
pyloid/monitor.py,sha256=fqDnZ_7dpxVZLVJ5gCluDRY2USrQ5YL_fw1AnYivhsk,12741
|
6
|
-
pyloid/pyloid.py,sha256=
|
6
|
+
pyloid/pyloid.py,sha256=JMvWDd-3IA9wcpZSlzdMBIPK8F7v1O_1o8N58LkBlO4,49556
|
7
7
|
pyloid/timer.py,sha256=1bYhqte3rV77vaeMUkcTgmx2ux7FtCqLCx9lIC2-COg,4360
|
8
8
|
pyloid/tray.py,sha256=rXgdkvzGxtie_EIcTSA7fjuta4nJk5THhNkGFcfv5Ew,634
|
9
9
|
pyloid/utils.py,sha256=DQerZWU_0o8dHcJ5y3yXf9i5OXn7KQZqU-hVBq3uPUA,711
|
10
|
-
pyloid-0.11.
|
11
|
-
pyloid-0.11.
|
12
|
-
pyloid-0.11.
|
13
|
-
pyloid-0.11.
|
10
|
+
pyloid-0.11.5.dist-info/LICENSE,sha256=F96EzotgWhhpnQTW2TcdoqrMDir1jyEo6H915tGQ-QE,11524
|
11
|
+
pyloid-0.11.5.dist-info/METADATA,sha256=vp2aFxKcfVB42nBnkWlsFPNcb-xzHrigWIQD-TiHIXw,6069
|
12
|
+
pyloid-0.11.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
13
|
+
pyloid-0.11.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|