File: clipboard.py

package info (click to toggle)
python-ase 3.26.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,484 kB
  • sloc: python: 148,112; xml: 2,728; makefile: 110; javascript: 47
file content (26 lines) | stat: -rw-r--r-- 708 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from ase import Atoms
from ase.io.jsonio import decode, encode


class AtomsClipboard:
    def __init__(self, tk):
        self.tk = tk

    def get_text(self) -> str:
        return self.tk.clipboard_get()

    def set_text(self, text: str) -> None:
        self.tk.clipboard_clear()
        self.tk.clipboard_append(text)

    def get_atoms(self) -> Atoms:
        text = self.get_text()
        atoms = decode(text)
        if not isinstance(atoms, Atoms):
            typename = type(atoms).__name__
            raise ValueError(f'Cannot convert {typename} to Atoms')
        return atoms

    def set_atoms(self, atoms: Atoms) -> None:
        json_text = encode(atoms)
        self.set_text(json_text)