pyloid 0.13.1__py3-none-any.whl → 0.14.1__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/filewatcher.py CHANGED
@@ -1,35 +1,163 @@
1
1
  from PySide6.QtCore import QFileSystemWatcher, QObject, Signal
2
2
 
3
3
  class FileWatcher(QObject):
4
+ """
5
+ FileWatcher class for monitoring file and directory changes.
6
+
7
+ This class automatically detects changes in specific files or directories and provides notifications.
8
+
9
+ Attributes
10
+ ----------
11
+ file_changed : Signal
12
+ Signal emitted when a file is changed.
13
+ directory_changed : Signal
14
+ Signal emitted when a directory is changed.
15
+
16
+ Methods
17
+ -------
18
+ add_path(path)
19
+ Adds a file or directory to the watch list.
20
+ remove_path(path)
21
+ Removes a file or directory from the watch list.
22
+ get_watched_paths()
23
+ Returns all currently watched paths (files and directories).
24
+ get_watched_files()
25
+ Returns all currently watched files.
26
+ get_watched_directories()
27
+ Returns all currently watched directories.
28
+ remove_all_paths()
29
+ Removes all paths from the watch list.
30
+ """
31
+
4
32
  file_changed = Signal(str)
5
33
  directory_changed = Signal(str)
6
34
 
7
35
  def __init__(self):
36
+ """
37
+ Initializes the FileWatcher object.
38
+ """
8
39
  super().__init__()
9
40
  self.watcher = QFileSystemWatcher()
10
41
  self.watcher.fileChanged.connect(self.file_changed)
11
42
  self.watcher.directoryChanged.connect(self.directory_changed)
12
43
 
13
44
  def add_path(self, path):
14
- """Add a file or directory to the watch list."""
45
+ """
46
+ Adds a file or directory to the watch list.
47
+
48
+ Parameters
49
+ ----------
50
+ path : str
51
+ The path of the file or directory to watch.
52
+
53
+ Returns
54
+ -------
55
+ bool
56
+ Whether the path was successfully added.
57
+
58
+ Examples
59
+ --------
60
+ >>> watcher = FileWatcher()
61
+ >>> result = watcher.add_path("/path/to/file_or_directory")
62
+ >>> if result:
63
+ >>> print("Watch started")
64
+ >>> else:
65
+ >>> print("Failed to start watching")
66
+ """
15
67
  return self.watcher.addPath(path)
16
68
 
17
69
  def remove_path(self, path):
18
- """Remove a file or directory from the watch list."""
70
+ """
71
+ Removes a file or directory from the watch list.
72
+
73
+ Parameters
74
+ ----------
75
+ path : str
76
+ The path of the file or directory to remove.
77
+
78
+ Returns
79
+ -------
80
+ bool
81
+ Whether the path was successfully removed.
82
+
83
+ Examples
84
+ --------
85
+ >>> watcher = FileWatcher()
86
+ >>> result = watcher.remove_path("/path/to/file_or_directory")
87
+ >>> if result:
88
+ >>> print("Successfully stopped watching")
89
+ >>> else:
90
+ >>> print("Failed to stop watching")
91
+ """
19
92
  return self.watcher.removePath(path)
20
93
 
21
94
  def get_watched_paths(self):
22
- """Return all currently watched paths (files + directories)."""
95
+ """
96
+ Returns all currently watched paths (files and directories).
97
+
98
+ Returns
99
+ -------
100
+ list of str
101
+ All currently watched paths.
102
+
103
+ Examples
104
+ --------
105
+ >>> watcher = FileWatcher()
106
+ >>> paths = watcher.get_watched_paths()
107
+ >>> print("Watched paths:", paths)
108
+ """
23
109
  return self.watcher.files() + self.watcher.directories()
24
-
110
+
25
111
  def get_watched_files(self):
26
- """Return all currently watched files."""
112
+ """
113
+ Returns all currently watched files.
114
+
115
+ Returns
116
+ -------
117
+ list of str
118
+ All currently watched files.
119
+
120
+ Examples
121
+ --------
122
+ >>> watcher = FileWatcher()
123
+ >>> files = watcher.get_watched_files()
124
+ >>> print("Watched files:", files)
125
+ """
27
126
  return self.watcher.files()
28
-
127
+
29
128
  def get_watched_directories(self):
30
- """Return all currently watched directories."""
129
+ """
130
+ Returns all currently watched directories.
131
+
132
+ Returns
133
+ -------
134
+ list of str
135
+ All currently watched directories.
136
+
137
+ Examples
138
+ --------
139
+ >>> watcher = FileWatcher()
140
+ >>> directories = watcher.get_watched_directories()
141
+ >>> print("Watched directories:", directories)
142
+ """
31
143
  return self.watcher.directories()
32
-
144
+
33
145
  def remove_all_paths(self):
34
- """Remove all paths from the watch list."""
146
+ """
147
+ Removes all paths from the watch list.
148
+
149
+ Returns
150
+ -------
151
+ bool
152
+ Whether all paths were successfully removed.
153
+
154
+ Examples
155
+ --------
156
+ >>> watcher = FileWatcher()
157
+ >>> result = watcher.remove_all_paths()
158
+ >>> if result:
159
+ >>> print("Successfully removed all paths")
160
+ >>> else:
161
+ >>> print("Failed to remove all paths")
162
+ """
35
163
  return self.watcher.removePaths(self.get_watched_paths())
@@ -0,0 +1,25 @@
1
+ from ..pyloid import Pyloid
2
+ from ..api import PyloidAPI, Bridge
3
+ from typing import Optional, Callable
4
+
5
+
6
+ # class EventAPI(PyloidAPI):
7
+ # def __init__(self, window_id: str, app):
8
+ # super().__init__()
9
+ # self.window_id: str = window_id
10
+ # self.app: PylonApp = app
11
+ # self.subscribers = {}
12
+
13
+ # @Bridge(str, Callable)
14
+ # def on(self, event_name: str, callback: Callable):
15
+ # """특정 이벤트를 구독합니다."""
16
+ # if event_name not in self.subscribers:
17
+ # self.subscribers[event_name] = []
18
+ # self.subscribers[event_name].append(callback)
19
+
20
+ # @Bridge(str, result=Optional[str])
21
+ # def emit(self, event_name: str, *args, **kwargs):
22
+ # """다른 윈도우로 특정 이벤트를 보냅니다."""
23
+ # if event_name in self.subscribers:
24
+ # for callback in self.subscribers[event_name]:
25
+ # callback(*args, **kwargs)
@@ -0,0 +1,166 @@
1
+ from ..api import PyloidAPI, Bridge
2
+ from typing import Optional
3
+
4
+ class WindowAPI(PyloidAPI):
5
+ def __init__(self, window_id: str, app):
6
+ super().__init__()
7
+ self.window_id: str = window_id
8
+ self.app = app
9
+
10
+ @Bridge(result=str)
11
+ def getWindowId(self):
12
+ """Returns the current window ID."""
13
+ return self.window_id
14
+
15
+ @Bridge(result=dict)
16
+ def getWindowProperties(self):
17
+ """Returns the properties of the window."""
18
+ window = self.app.get_window_by_id(self.window_id)
19
+ window_properties = window.get_window_properties()
20
+ return window_properties
21
+
22
+ @Bridge()
23
+ def close(self):
24
+ """Closes the window."""
25
+ window = self.app.get_window_by_id(self.window_id)
26
+ if window:
27
+ window.close()
28
+
29
+ @Bridge()
30
+ def hide(self):
31
+ """Hides the window."""
32
+ window = self.app.get_window_by_id(self.window_id)
33
+ if window:
34
+ window.hide()
35
+
36
+ @Bridge()
37
+ def show(self):
38
+ """Shows and focuses the window."""
39
+ window = self.app.get_window_by_id(self.window_id)
40
+ if window:
41
+ window.show()
42
+
43
+ @Bridge()
44
+ def toggleFullscreen(self):
45
+ """Toggles fullscreen mode for the window."""
46
+ window = self.app.get_window_by_id(self.window_id)
47
+ if window:
48
+ window.toggle_fullscreen()
49
+
50
+ @Bridge()
51
+ def minimize(self):
52
+ """Minimizes the window."""
53
+ window = self.app.get_window_by_id(self.window_id)
54
+ if window:
55
+ window.minimize()
56
+
57
+ @Bridge()
58
+ def maximize(self):
59
+ """Maximizes the window."""
60
+ window = self.app.get_window_by_id(self.window_id)
61
+ if window:
62
+ window.maximize()
63
+
64
+ @Bridge()
65
+ def unmaximize(self):
66
+ """Restores the window to its normal state."""
67
+ window = self.app.get_window_by_id(self.window_id)
68
+ if window:
69
+ window.unmaximize()
70
+
71
+ @Bridge(str)
72
+ def setTitle(self, title: str):
73
+ """Sets the title of the window."""
74
+ window = self.app.get_window_by_id(self.window_id)
75
+ if window:
76
+ window.set_title(title)
77
+
78
+ @Bridge(int, int)
79
+ def setSize(self, width: int, height: int):
80
+ """Sets the size of the window."""
81
+ window = self.app.get_window_by_id(self.window_id)
82
+ if window:
83
+ window.set_size(width, height)
84
+
85
+ @Bridge(int, int)
86
+ def setPosition(self, x: int, y: int):
87
+ """Sets the position of the window."""
88
+ window = self.app.get_window_by_id(self.window_id)
89
+ if window:
90
+ window.set_position(x, y)
91
+
92
+ @Bridge(bool)
93
+ def setFrame(self, frame: bool):
94
+ """Sets the frame of the window."""
95
+ window = self.app.get_window_by_id(self.window_id)
96
+ if window:
97
+ window.set_frame(frame)
98
+
99
+ @Bridge(bool)
100
+ def setContextMenu(self, context_menu: bool):
101
+ """Sets the context menu of the window."""
102
+ window = self.app.get_window_by_id(self.window_id)
103
+ if window:
104
+ window.set_context_menu(context_menu)
105
+
106
+ @Bridge(bool)
107
+ def setDevTools(self, enable: bool):
108
+ """Sets the developer tools of the window."""
109
+ window = self.app.get_window_by_id(self.window_id)
110
+ if window:
111
+ window.set_dev_tools(enable)
112
+
113
+ @Bridge(str, result=Optional[str])
114
+ def capture(self, save_path: str) -> Optional[str]:
115
+ """Captures the current window."""
116
+ window = self.app.get_window_by_id(self.window_id)
117
+ if window:
118
+ return window.capture(save_path)
119
+ return None
120
+
121
+ @Bridge(result=bool)
122
+ def getFrame(self):
123
+ """Returns whether the window has a frame."""
124
+ window = self.app.get_window_by_id(self.window_id)
125
+ return window.frame if window else False
126
+
127
+ @Bridge(result=bool)
128
+ def getContextMenu(self):
129
+ """Returns whether the window has a context menu."""
130
+ window = self.app.get_window_by_id(self.window_id)
131
+ return window.context_menu if window else False
132
+
133
+ @Bridge(result=bool)
134
+ def getDevTools(self):
135
+ """Returns whether the window has developer tools."""
136
+ window = self.app.get_window_by_id(self.window_id)
137
+ return window.dev_tools if window else False
138
+
139
+ @Bridge(result=str)
140
+ def getTitle(self):
141
+ """Returns the title of the window."""
142
+ window = self.app.get_window_by_id(self.window_id)
143
+ return window.title if window else ""
144
+
145
+ @Bridge(result=dict)
146
+ def getSize(self):
147
+ """Returns the size of the window."""
148
+ window = self.app.get_window_by_id(self.window_id)
149
+ return (
150
+ {"width": window.width, "height": window.height}
151
+ if window
152
+ else {"width": 0, "height": 0}
153
+ )
154
+
155
+ @Bridge(result=dict)
156
+ def getPosition(self):
157
+ """Returns the position of the window."""
158
+ window = self.app.get_window_by_id(self.window_id)
159
+ return {"x": window.x, "y": window.y} if window else {"x": 0, "y": 0}
160
+
161
+ @Bridge()
162
+ def startSystemDrag(self):
163
+ """Starts the system drag."""
164
+ window = self.app.get_window_by_id(self.window_id)
165
+ if window:
166
+ window.web_view.start_system_drag()