pyloid 0.13.0__py3-none-any.whl → 0.14.0__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/timer.py CHANGED
@@ -1,28 +1,80 @@
1
- from PySide6.QtCore import QTimer, QObject
1
+ from PySide6.QtCore import QTimer, QObject, Qt
2
2
 
3
3
  class PyloidTimer(QObject):
4
4
  def __init__(self):
5
+ """
6
+ Constructor for the PyloidTimer class.
7
+
8
+ This class is based on PySide6's QTimer and allows for easy creation and management of various types of timers.
9
+ """
5
10
  super().__init__()
6
11
  self.timers = {}
7
12
 
8
13
  def start_periodic_timer(self, interval, callback):
9
14
  """
10
- 주기적으로 실행되는 타이머를 시작합니다.
11
-
12
- :param interval: 밀리초 단위의 간격
13
- :param callback: 실행할 콜백 함수
14
- :param auto_remove: 타이머 중지 시 자동 삭제 여부
15
- :return: 타이머 ID
15
+ Starts a periodic timer.
16
+
17
+ This function starts a timer that repeatedly executes the callback function at the given interval.
18
+
19
+ Parameters
20
+ ----------
21
+ interval : int
22
+ Interval in milliseconds
23
+ callback : function
24
+ Callback function to execute
25
+
26
+ Returns
27
+ -------
28
+ int
29
+ Timer ID
30
+
31
+ Example
32
+ -------
33
+ ```python
34
+ from pyloid.timer import PyloidTimer
35
+
36
+ timer_manager = PyloidTimer()
37
+
38
+ def print_hello():
39
+ print("Hello!")
40
+
41
+ # Start a timer that prints "Hello!" every 2 seconds
42
+ timer_id = timer_manager.start_periodic_timer(2000, print_hello)
43
+ ```
16
44
  """
17
45
  return self._create_timer(interval, callback, single_shot=False, auto_remove=False)
18
46
 
19
47
  def start_single_shot_timer(self, delay, callback):
20
48
  """
21
- 번만 실행되는 타이머를 시작합니다.
22
-
23
- :param delay: 밀리초 단위의 지연 시간
24
- :param callback: 실행할 콜백 함수
25
- :return: 타이머 ID
49
+ Starts a single-shot timer.
50
+
51
+ This function starts a timer that executes the callback function once after the given delay.
52
+
53
+ Parameters
54
+ ----------
55
+ delay : int
56
+ Delay in milliseconds
57
+ callback : function
58
+ Callback function to execute
59
+
60
+ Returns
61
+ -------
62
+ int
63
+ Timer ID
64
+
65
+ Example
66
+ -------
67
+ ```python
68
+ from pyloid.timer import PyloidTimer
69
+
70
+ timer_manager = PyloidTimer()
71
+
72
+ def delayed_message():
73
+ print("5 seconds have passed!")
74
+
75
+ # Start a single-shot timer that prints a message after 5 seconds
76
+ timer_id = timer_manager.start_single_shot_timer(5000, delayed_message)
77
+ ```
26
78
  """
27
79
  return self._create_timer(delay, callback, single_shot=True, auto_remove=True)
28
80
 
@@ -48,9 +100,25 @@ class PyloidTimer(QObject):
48
100
 
49
101
  def stop_timer(self, timer_id):
50
102
  """
51
- 지정된 ID의 타이머를 중지합니다.
52
-
53
- :param timer_id: 중지할 타이머의 ID
103
+ Stops the timer with the specified ID.
104
+
105
+ This function stops the timer corresponding to the given timer ID and removes it from the timer list.
106
+
107
+ Parameters
108
+ ----------
109
+ timer_id : int
110
+ ID of the timer to stop
111
+
112
+ Example
113
+ -------
114
+ ```python
115
+ from pyloid.timer import PyloidTimer
116
+
117
+ timer_manager = PyloidTimer()
118
+
119
+ # Stop the timer using its ID
120
+ timer_manager.stop_timer(timer_id)
121
+ ```
54
122
  """
55
123
  if timer_id in self.timers:
56
124
  self.timers[timer_id].stop()
@@ -58,19 +126,62 @@ class PyloidTimer(QObject):
58
126
 
59
127
  def is_timer_active(self, timer_id):
60
128
  """
61
- 지정된 ID의 타이머가 활성 상태인지 확인합니다.
62
-
63
- :param timer_id: 확인할 타이머의 ID
64
- :return: 타이머가 활성 상태이면 True, 그렇지 않으면 False
129
+ Checks if the timer with the specified ID is active.
130
+
131
+ This function returns whether the timer corresponding to the given timer ID is currently active.
132
+
133
+ Parameters
134
+ ----------
135
+ timer_id : int
136
+ ID of the timer to check
137
+
138
+ Returns
139
+ -------
140
+ bool
141
+ True if the timer is active, False otherwise
142
+
143
+ Example
144
+ -------
145
+ ```python
146
+ from pyloid.timer import PyloidTimer
147
+
148
+ timer_manager = PyloidTimer()
149
+
150
+ if timer_manager.is_timer_active(timer_id):
151
+ print("The timer is still running.")
152
+ else:
153
+ print("The timer has stopped.")
154
+ ```
65
155
  """
66
156
  return timer_id in self.timers and self.timers[timer_id].isActive()
67
157
 
68
158
  def get_remaining_time(self, timer_id):
69
159
  """
70
- 지정된 ID의 타이머의 남은 시간을 반환합니다.
71
-
72
- :param timer_id: 확인할 타이머의 ID
73
- :return: 남은 시간 (밀리초), 타이머가 없으면 None
160
+ Returns the remaining time of the timer with the specified ID.
161
+
162
+ This function returns the remaining time of the timer corresponding to the given timer ID in milliseconds.
163
+
164
+ Parameters
165
+ ----------
166
+ timer_id : int
167
+ ID of the timer to check
168
+
169
+ Returns
170
+ -------
171
+ int or None
172
+ Remaining time in milliseconds, or None if the timer does not exist
173
+
174
+ Example
175
+ -------
176
+ ```python
177
+ from pyloid.timer import PyloidTimer
178
+
179
+ timer_manager = PyloidTimer()
180
+
181
+ remaining_time = timer_manager.get_remaining_time(timer_id)
182
+ if remaining_time is not None:
183
+ print(f"{remaining_time}ms remaining.")
184
+ ```
74
185
  """
75
186
  if timer_id in self.timers:
76
187
  return self.timers[timer_id].remainingTime()
@@ -78,33 +189,106 @@ class PyloidTimer(QObject):
78
189
 
79
190
  def set_interval(self, timer_id, interval):
80
191
  """
81
- 지정된 ID의 타이머의 간격을 설정합니다.
82
-
83
- :param timer_id: 설정할 타이머의 ID
84
- :param interval: 새로운 간격 (밀리초)
192
+ Sets the interval of the timer with the specified ID.
193
+
194
+ This function sets a new interval for the timer corresponding to the given timer ID.
195
+
196
+ Parameters
197
+ ----------
198
+ timer_id : int
199
+ ID of the timer to set
200
+ interval : int
201
+ New interval in milliseconds
202
+
203
+ Example
204
+ -------
205
+ ```python
206
+ from pyloid.timer import PyloidTimer
207
+
208
+ timer_manager = PyloidTimer()
209
+
210
+ # Change the timer interval to 3 seconds
211
+ timer_manager.set_interval(timer_id, 3000)
212
+ ```
85
213
  """
86
214
  if timer_id in self.timers:
87
215
  self.timers[timer_id].setInterval(interval)
88
216
 
89
217
  def start_precise_periodic_timer(self, interval, callback):
90
218
  """
91
- 정밀한 주기적 타이머를 시작합니다.
219
+ Starts a precise periodic timer.
220
+
221
+ This function starts a timer that repeatedly executes the callback function at precise intervals.
92
222
 
93
- :param interval: 밀리초 단위의 간격
94
- :param callback: 실행할 콜백 함수
95
- :return: 타이머 ID
223
+ Note
224
+ ----
225
+ Precise timers consume more CPU resources.
226
+
227
+ Parameters
228
+ ----------
229
+ interval : int
230
+ Interval in milliseconds
231
+ callback : function
232
+ Callback function to execute
233
+
234
+ Returns
235
+ -------
236
+ int
237
+ Timer ID
238
+
239
+ Example
240
+ -------
241
+ ```python
242
+ from pyloid.timer import PyloidTimer
243
+
244
+ timer_manager = PyloidTimer()
245
+
246
+ def precise_task():
247
+ print("Executing precise task")
248
+
249
+ # Start a precise periodic timer with a 100ms interval
250
+ precise_timer_id = timer_manager.start_precise_periodic_timer(100, precise_task)
251
+ ```
96
252
  """
97
- return self._create_timer_with_type(interval, callback, QTimer.TimerType.PreciseTimer)
253
+ return self._create_timer_with_type(interval, callback, Qt.TimerType.PreciseTimer)
98
254
 
99
255
  def start_coarse_periodic_timer(self, interval, callback):
100
256
  """
101
- 정밀한 주기적 타이머를 시작합니다.
102
-
103
- :param interval: 밀리초 단위의 간격
104
- :param callback: 실행할 콜백 함수
105
- :return: 타이머 ID
257
+ Starts a coarse periodic timer.
258
+
259
+ This function starts a timer that repeatedly executes the callback function at coarse intervals.
260
+
261
+ Note
262
+ ----
263
+ Coarse timers consume less CPU resources.
264
+
265
+ Parameters
266
+ ----------
267
+ interval : int
268
+ Interval in milliseconds
269
+ callback : function
270
+ Callback function to execute
271
+
272
+ Returns
273
+ -------
274
+ int
275
+ Timer ID
276
+
277
+ Example
278
+ -------
279
+ ```python
280
+ from pyloid.timer import PyloidTimer
281
+
282
+ timer_manager = PyloidTimer()
283
+
284
+ def coarse_task():
285
+ print("Executing coarse task")
286
+
287
+ # Start a coarse periodic timer with a 500ms interval
288
+ coarse_timer_id = timer_manager.start_coarse_periodic_timer(500, coarse_task)
289
+ ```
106
290
  """
107
- return self._create_timer_with_type(interval, callback, QTimer.TimerType.CoarseTimer)
291
+ return self._create_timer_with_type(interval, callback, Qt.TimerType.CoarseTimer)
108
292
 
109
293
  def _create_timer_with_type(self, interval, callback, timer_type, auto_remove=False):
110
294
  timer = QTimer(self)
pyloid/tray.py CHANGED
@@ -3,6 +3,36 @@ from PySide6.QtWidgets import QSystemTrayIcon
3
3
 
4
4
 
5
5
  class TrayEvent(Enum):
6
+ """
7
+ TrayEvent is an enumeration class representing events related to the system tray icon.
8
+
9
+ Enumeration Members
10
+ -------------------
11
+ DoubleClick : Event that occurs when the tray icon is double-clicked
12
+ MiddleClick : Event that occurs when the tray icon is clicked with the middle button
13
+ RightClick : Event that occurs when the tray icon is right-clicked (context menu)
14
+ LeftClick : Event that occurs when the tray icon is left-clicked
15
+ Unknown : Unknown event
16
+
17
+ Usage Example
18
+ -------------
19
+ ```python
20
+ from pyloid import Pyloid, TrayEvent
21
+
22
+ app = Pyloid(app_name="Pyloid-App")
23
+
24
+ app.set_tray_icon("icons/icon.ico")
25
+
26
+ app.set_tray_actions(
27
+ {
28
+ TrayEvent.DoubleClick: lambda: print("Tray icon was double-clicked."),
29
+ TrayEvent.MiddleClick: lambda: print("Tray icon was middle-clicked."),
30
+ TrayEvent.RightClick: lambda: print("Tray icon was right-clicked."),
31
+ TrayEvent.LeftClick: lambda: print("Tray icon was left-clicked."),
32
+ }
33
+ )
34
+ ```
35
+ """
6
36
  DoubleClick = QSystemTrayIcon.ActivationReason.DoubleClick
7
37
  MiddleClick = QSystemTrayIcon.ActivationReason.MiddleClick
8
38
  RightClick = QSystemTrayIcon.ActivationReason.Context
pyloid/utils.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import sys
2
2
  import os
3
+ import platform
3
4
  from typing import Optional
4
5
 
5
6
 
@@ -8,8 +9,20 @@ def get_production_path() -> Optional[str]:
8
9
  Returns the path to the resource files in a production environment.
9
10
  If running as a regular Python script, returns None.
10
11
 
11
- Returns:
12
- str | None
12
+ Returns
13
+ -------
14
+ str | None
15
+ The path to the resource files if in a production environment,
16
+ otherwise None.
17
+
18
+ Examples
19
+ --------
20
+ >>> from pyloid.utils import get_production_path
21
+ >>> path = get_production_path()
22
+ >>> if path:
23
+ >>> print(f"Production path: {path}")
24
+ >>> else:
25
+ >>> print("Not in a production environment.")
13
26
  """
14
27
  if getattr(sys, 'frozen', False):
15
28
  # If built with PyInstaller
@@ -18,12 +31,48 @@ def get_production_path() -> Optional[str]:
18
31
  # If running as a regular Python script
19
32
  return None
20
33
 
21
-
22
- def is_production():
34
+ def is_production() -> bool:
23
35
  """
24
36
  Checks if the current environment is a production environment.
25
37
 
26
- Returns:
27
- bool: True if in a production environment, False otherwise.
38
+ Returns
39
+ -------
40
+ bool
41
+ True if in a production environment, False otherwise.
42
+
43
+ Examples
44
+ --------
45
+ >>> from pyloid.utils import is_production
46
+ >>> if is_production():
47
+ >>> print("Running in production environment.")
48
+ >>> else:
49
+ >>> print("Not in production environment.")
28
50
  """
29
51
  return getattr(sys, 'frozen', False)
52
+
53
+
54
+ def get_platform() -> str:
55
+ """
56
+ Returns the name of the current system's platform.
57
+
58
+ This function uses `platform.system()` to return the name of the current operating system.
59
+
60
+ Returns
61
+ -------
62
+ "Windows" | "Darwin" | "Linux"
63
+ - "Windows" for Windows systems
64
+ - "Darwin" for macOS systems
65
+ - "Linux" for Linux systems
66
+
67
+ Examples
68
+ --------
69
+ >>> from pyloid.utils import get_platform
70
+ >>> platform_name = get_platform()
71
+ >>> print(platform_name)
72
+ Windows
73
+ """
74
+ return platform.system()
75
+
76
+
77
+
78
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyloid
3
- Version: 0.13.0
3
+ Version: 0.14.0
4
4
  Summary:
5
5
  Author: aesthetics-of-record
6
6
  Author-email: 111675679+aesthetics-of-record@users.noreply.github.com
@@ -0,0 +1,17 @@
1
+ pyloid/__init__.py,sha256=OOPhOKNQVmAM8hnfTeE7lHzxb8LsFNcgegBAvDrA-vY,293
2
+ pyloid/api.py,sha256=waOHddz-rmeTxTvMWRH7Dq24RTKkkJpLw55Ava--TWw,2204
3
+ pyloid/autostart.py,sha256=K7DQYl4LHItvPp0bt1V9WwaaZmVSTeGvadkcwG-KKrI,3899
4
+ pyloid/browser_window.py,sha256=dMdmMTMqgAp2wViGZqZmUO4J5_GtNkYSQ_BCpq65ybo,37543
5
+ pyloid/custom/titlebar.py,sha256=itzK9pJbZMQ7BKca9kdbuHMffurrw15UijR6OU03Xsk,3894
6
+ pyloid/filewatcher.py,sha256=3M5zWVUf1OhlkWJcDFC8ZA9agO4Q-U8WdgGpy6kaVz0,4601
7
+ pyloid/js_api/event_api.py,sha256=_52yyBonqecmMvJpFW7OMNi_jX8Nrteqw_kI6r-DGG0,951
8
+ pyloid/js_api/window_api.py,sha256=JDAFIMMiw75PNcyO8_163PJdRY-dvFNBO3IN0TA-Xsw,5383
9
+ pyloid/monitor.py,sha256=nmcoOmlHeTysrZVT5mmL92ASbqMg8aH-hQg35qKWi0M,27540
10
+ pyloid/pyloid.py,sha256=e_5G4wdkhZchPiwgydo2w5IIIpj-ZP8ge4ZQp9lmcXs,37889
11
+ pyloid/timer.py,sha256=RqMsChFUd93cxMVgkHWiIKrci0QDTBgJSTULnAtYT8M,8712
12
+ pyloid/tray.py,sha256=D12opVEc2wc2T4tK9epaN1oOdeziScsIVNM2uCN7C-A,1710
13
+ pyloid/utils.py,sha256=VGZE2liY8_AElEqxVe1YLbk3fWlcAevpRc6oOTTgi-U,1927
14
+ pyloid-0.14.0.dist-info/LICENSE,sha256=F96EzotgWhhpnQTW2TcdoqrMDir1jyEo6H915tGQ-QE,11524
15
+ pyloid-0.14.0.dist-info/METADATA,sha256=QhNFQVNOyvDMqwD2QIz4RMpdxP_QUWkimmLaUsPO_jE,3634
16
+ pyloid-0.14.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
17
+ pyloid-0.14.0.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- pyloid/__init__.py,sha256=OOPhOKNQVmAM8hnfTeE7lHzxb8LsFNcgegBAvDrA-vY,293
2
- pyloid/api.py,sha256=whgfvPr1A6iwZ1Ewo-0FnOUNnt1K58c-P7YjzuQHcUM,194
3
- pyloid/autostart.py,sha256=K7DQYl4LHItvPp0bt1V9WwaaZmVSTeGvadkcwG-KKrI,3899
4
- pyloid/custom/titlebar.py,sha256=itzK9pJbZMQ7BKca9kdbuHMffurrw15UijR6OU03Xsk,3894
5
- pyloid/filewatcher.py,sha256=n8N56D65le5TpsgxXb7z-FO_0lqv4UYD4yGq_UuMrAs,1285
6
- pyloid/monitor.py,sha256=fqDnZ_7dpxVZLVJ5gCluDRY2USrQ5YL_fw1AnYivhsk,12741
7
- pyloid/pyloid.py,sha256=Fj60bHP6x9_GPCxWSB97t21VwzdDjQmhf_RIWzc4_k0,53585
8
- pyloid/timer.py,sha256=1bYhqte3rV77vaeMUkcTgmx2ux7FtCqLCx9lIC2-COg,4360
9
- pyloid/tray.py,sha256=rXgdkvzGxtie_EIcTSA7fjuta4nJk5THhNkGFcfv5Ew,634
10
- pyloid/utils.py,sha256=DQerZWU_0o8dHcJ5y3yXf9i5OXn7KQZqU-hVBq3uPUA,711
11
- pyloid-0.13.0.dist-info/LICENSE,sha256=F96EzotgWhhpnQTW2TcdoqrMDir1jyEo6H915tGQ-QE,11524
12
- pyloid-0.13.0.dist-info/METADATA,sha256=q61MnQEpscRzhp5cQDk33lKSBgTCLm5xJ5-nX5L2o7w,3634
13
- pyloid-0.13.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
14
- pyloid-0.13.0.dist-info/RECORD,,