Coverage for ase / gui / repeat.py: 96.00%
25 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-04 10:20 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-04 10:20 +0000
1# fmt: off
3import numpy as np
5import ase.gui.ui as ui
6from ase.gui.i18n import _
9class Repeat:
10 def __init__(self, gui):
11 win = ui.Window(_('Repeat'))
12 win.add(_('Repeat atoms:'))
13 self.repeat = [ui.SpinBox(r, 1, 9, 1, self.change)
14 for r in gui.images.repeat]
15 win.add(self.repeat)
16 win.add(ui.Button(_('Set unit cell'), self.set_unit_cell))
18 for sb, vec in zip(self.repeat, gui.atoms.cell):
19 if not vec.any():
20 sb.active = False
22 self.gui = gui
24 def change(self):
25 repeat = [int(r.value) for r in self.repeat]
26 self.gui.images.repeat_images(repeat)
27 self.gui.set_frame()
28 self.gui.update_history(mask=np.ones(len(self.gui.images), bool))
30 def set_unit_cell(self):
31 self.gui.images.repeat_unit_cell()
32 for r in self.repeat:
33 r.value = 1
34 self.gui.set_frame()
35 self.gui.update_history(mask=np.ones(len(self.gui.images), bool))