Coverage for /builds/ase/ase/ase/gui/repeat.py: 95.45%

22 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2025-08-02 00:12 +0000

1# fmt: off 

2 

3import ase.gui.ui as ui 

4from ase.gui.i18n import _ 

5 

6 

7class Repeat: 

8 def __init__(self, gui): 

9 win = ui.Window(_('Repeat'), wmtype='utility') 

10 win.add(_('Repeat atoms:')) 

11 self.repeat = [ui.SpinBox(r, 1, 9, 1, self.change) 

12 for r in gui.images.repeat] 

13 win.add(self.repeat) 

14 win.add(ui.Button(_('Set unit cell'), self.set_unit_cell)) 

15 

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

17 if not vec.any(): 

18 sb.active = False 

19 

20 self.gui = gui 

21 

22 def change(self): 

23 repeat = [int(r.value) for r in self.repeat] 

24 self.gui.images.repeat_images(repeat) 

25 self.gui.set_frame() 

26 

27 def set_unit_cell(self): 

28 self.gui.images.repeat_unit_cell() 

29 for r in self.repeat: 

30 r.value = 1 

31 self.gui.set_frame()