diff --git a/clipette/__init__.py b/clipette/__init__.py index 2256cd3..8030dab 100644 --- a/clipette/__init__.py +++ b/clipette/__init__.py @@ -26,6 +26,7 @@ from os.path import join as path_join from sys import getfilesystemencoding import utils +from contextlib import contextmanager class ClipetteWin32ClipboardError(Exception): @@ -97,6 +98,19 @@ def close_clipboard() -> int: """ return utils.user32.CloseClipboard() +@contextmanager +def clipboard(): + """ + Context manager to open and close clipboard automatically. + + :return: if function fails, 1 otherwise. + :rtype: int + """ + res = open_clipboard() + yield res + if res: close_clipboard() + + def empty_clipboard() -> int: """ Empties clipboard. Should be called before any setter actions. diff --git a/example.py b/example.py index 6f0a740..698ae6a 100644 --- a/example.py +++ b/example.py @@ -2,4 +2,9 @@ if clipette.open_clipboard(): clipette.empty_cliboard() clipette.set_UNICODETEXT("") - clipette.close_clipboard() \ No newline at end of file + clipette.close_clipboard() + +# safe clipboard +with clipette.clipboard(): + clipette.empty_cliboard() + clipette.set_UNICODETEXT("")