forked from platypush/platypush
Removed clipboard
backend.
The relevant clipboard monitoring logic has been moved to the `clipboard` plugin. Thus, enabling the plugin should provide all the feature, with no need for an additional backend.
This commit is contained in:
parent
7e31ac6ed8
commit
5971ec32c8
7 changed files with 40 additions and 62 deletions
|
@ -3,6 +3,11 @@
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
Given the high speed of development in the first phase, changes are being reported only starting from v0.20.2.
|
Given the high speed of development in the first phase, changes are being reported only starting from v0.20.2.
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
- Removed `clipboard` backend. Enabling the `clipboard` plugin will also enable
|
||||||
|
clipboard monitoring, with no need for an additional backend.
|
||||||
|
|
||||||
## [0.23.3] - 2022-06-01
|
## [0.23.3] - 2022-06-01
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -17,7 +17,6 @@ Backends
|
||||||
platypush/backend/button.flic.rst
|
platypush/backend/button.flic.rst
|
||||||
platypush/backend/camera.pi.rst
|
platypush/backend/camera.pi.rst
|
||||||
platypush/backend/chat.telegram.rst
|
platypush/backend/chat.telegram.rst
|
||||||
platypush/backend/clipboard.rst
|
|
||||||
platypush/backend/covid19.rst
|
platypush/backend/covid19.rst
|
||||||
platypush/backend/file.monitor.rst
|
platypush/backend/file.monitor.rst
|
||||||
platypush/backend/foursquare.rst
|
platypush/backend/foursquare.rst
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
``clipboard``
|
|
||||||
===============================
|
|
||||||
|
|
||||||
.. automodule:: platypush.backend.clipboard
|
|
||||||
:members:
|
|
|
@ -1,40 +0,0 @@
|
||||||
import time
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
import pyperclip
|
|
||||||
|
|
||||||
from platypush.backend import Backend
|
|
||||||
from platypush.message.event.clipboard import ClipboardEvent
|
|
||||||
|
|
||||||
|
|
||||||
class ClipboardBackend(Backend):
|
|
||||||
"""
|
|
||||||
This backend monitors for changes in the clipboard and generates even when the user copies a new text.
|
|
||||||
|
|
||||||
Requires:
|
|
||||||
|
|
||||||
- **pyperclip** (``pip install pyperclip``)
|
|
||||||
|
|
||||||
Triggers:
|
|
||||||
|
|
||||||
- :class:`platypush.message.event.clipboard.ClipboardEvent` on clipboard update.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
self._last_text: Optional[str] = None
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
self.logger.info('Started clipboard monitor backend')
|
|
||||||
while not self.should_stop():
|
|
||||||
text = pyperclip.paste()
|
|
||||||
if text and text != self._last_text:
|
|
||||||
self.bus.post(ClipboardEvent(text=text))
|
|
||||||
|
|
||||||
self._last_text = text
|
|
||||||
time.sleep(0.1)
|
|
||||||
|
|
||||||
self.logger.info('Stopped clipboard monitor backend')
|
|
||||||
|
|
||||||
# vim:sw=4:ts=4:et:
|
|
|
@ -1,8 +0,0 @@
|
||||||
manifest:
|
|
||||||
events:
|
|
||||||
platypush.message.event.clipboard.ClipboardEvent: on clipboard update.
|
|
||||||
install:
|
|
||||||
pip:
|
|
||||||
- pyperclip
|
|
||||||
package: platypush.backend.clipboard
|
|
||||||
type: backend
|
|
|
@ -1,15 +1,28 @@
|
||||||
from platypush.plugins import Plugin, action
|
from typing import Optional
|
||||||
|
|
||||||
|
from platypush.context import get_bus
|
||||||
|
from platypush.message.event.clipboard import ClipboardEvent
|
||||||
|
from platypush.plugins import RunnablePlugin, action
|
||||||
|
|
||||||
|
|
||||||
class ClipboardPlugin(Plugin):
|
class ClipboardPlugin(RunnablePlugin):
|
||||||
"""
|
"""
|
||||||
Plugin to programmatically copy strings to your system clipboard
|
Plugin to programmatically copy strings to your system clipboard,
|
||||||
and get the current clipboard content.
|
monitor and get the current clipboard content.
|
||||||
|
|
||||||
Requires:
|
Requires:
|
||||||
* **pyperclip** (``pip install pyperclip``)
|
- **pyperclip** (``pip install pyperclip``)
|
||||||
|
|
||||||
|
Triggers:
|
||||||
|
|
||||||
|
- :class:`platypush.message.event.clipboard.ClipboardEvent` on clipboard update.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self._last_text: Optional[str] = None
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def copy(self, text):
|
def copy(self, text):
|
||||||
"""
|
"""
|
||||||
|
@ -19,8 +32,8 @@ class ClipboardPlugin(Plugin):
|
||||||
:type text: str
|
:type text: str
|
||||||
"""
|
"""
|
||||||
import pyperclip
|
import pyperclip
|
||||||
pyperclip.copy(text)
|
|
||||||
|
|
||||||
|
pyperclip.copy(text)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def paste(self):
|
def paste(self):
|
||||||
|
@ -28,8 +41,21 @@ class ClipboardPlugin(Plugin):
|
||||||
Get the current content of the clipboard
|
Get the current content of the clipboard
|
||||||
"""
|
"""
|
||||||
import pyperclip
|
import pyperclip
|
||||||
|
|
||||||
return pyperclip.paste()
|
return pyperclip.paste()
|
||||||
|
|
||||||
|
def main(self):
|
||||||
|
import pyperclip
|
||||||
|
|
||||||
|
while not self.should_stop():
|
||||||
|
text = pyperclip.paste()
|
||||||
|
if text and text != self._last_text:
|
||||||
|
get_bus().post(ClipboardEvent(text=text))
|
||||||
|
self._last_text = text
|
||||||
|
|
||||||
|
self._should_stop.wait(0.1)
|
||||||
|
|
||||||
|
self.logger.info('Stopped clipboard monitor backend')
|
||||||
|
|
||||||
|
|
||||||
# vim:sw=4:ts=4:et:
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
manifest:
|
manifest:
|
||||||
events: {}
|
events:
|
||||||
|
platypush.message.event.clipboard.ClipboardEvent: on clipboard update.
|
||||||
install:
|
install:
|
||||||
pip:
|
pip:
|
||||||
- pyperclip
|
- pyperclip
|
||||||
|
|
Loading…
Reference in a new issue