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

1# fmt: off 

2 

3import numpy as np 

4 

5import ase.gui.ui as ui 

6from ase.gui.i18n import _ 

7 

8 

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)) 

17 

18 for sb, vec in zip(self.repeat, gui.atoms.cell): 

19 if not vec.any(): 

20 sb.active = False 

21 

22 self.gui = gui 

23 

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)) 

29 

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))