Coverage for /builds/ase/ase/ase/gui/settings.py: 66.07%

56 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 Settings: 

8 def __init__(self, gui): 

9 self.gui = gui 

10 win = ui.Window(_('Settings'), wmtype='utility') 

11 

12 # Constraints 

13 win.add(_('Constraints:')) 

14 win.add([ui.Button(_('Fix'), self.constrain_selected), 

15 '/', 

16 ui.Button(_('release'), self.release_selected), 

17 _(' selected atoms')]) 

18 win.add(ui.Button(_('Clear all constraints'), self.clear_constraints)) 

19 

20 # Visibility 

21 win.add(_('Visibility:')) 

22 win.add([ui.Button(_('Hide'), self.hide_selected), 

23 '/', 

24 ui.Button(_('show'), self.show_selected), 

25 _(' selected atoms')]) 

26 win.add(ui.Button(_('View all atoms'), self.view_all)) 

27 

28 # Miscellaneous 

29 win.add(_('Miscellaneous:')) 

30 self.scale = ui.SpinBox(self.gui.images.atom_scale, 

31 0.2, 2.0, 0.1, self.scale_radii) 

32 win.add([_('Scale atomic radii:'), self.scale]) 

33 self.force_vector_scale = ui.SpinBox( 

34 self.gui.force_vector_scale, 

35 0.0, 1e32, 0.1, 

36 rounding=2, 

37 callback=self.scale_force_vectors 

38 ) 

39 win.add([_('Scale force vectors:'), self.force_vector_scale]) 

40 self.velocity_vector_scale = ui.SpinBox( 

41 self.gui.velocity_vector_scale, 

42 0.0, 1e32, 0.1, 

43 rounding=2, 

44 callback=self.scale_velocity_vectors 

45 ) 

46 win.add([_('Scale velocity vectors:'), self.velocity_vector_scale]) 

47 self.magmom_vector_scale = ui.SpinBox( 

48 self.gui.magmom_vector_scale, 

49 0.0, 1e32, 0.1, 

50 rounding=2, 

51 callback=self.scale_magmom_vectors 

52 ) 

53 win.add([_('Scale magmom vectors:'), self.magmom_vector_scale]) 

54 

55 def scale_radii(self): 

56 self.gui.images.atom_scale = self.scale.value 

57 self.gui.draw() 

58 return True 

59 

60 def scale_force_vectors(self): 

61 self.gui.force_vector_scale = float(self.force_vector_scale.value) 

62 self.gui.draw() 

63 return True 

64 

65 def scale_velocity_vectors(self): 

66 self.gui.velocity_vector_scale = float(self.velocity_vector_scale.value) 

67 self.gui.draw() 

68 return True 

69 

70 def scale_magmom_vectors(self): 

71 self.gui.magmom_vector_scale = float(self.magmom_vector_scale.value) 

72 self.gui.draw() 

73 return True 

74 

75 def hide_selected(self): 

76 self.gui.images.visible[self.gui.images.selected] = False 

77 self.gui.draw() 

78 

79 def show_selected(self): 

80 self.gui.images.visible[self.gui.images.selected] = True 

81 self.gui.draw() 

82 

83 def view_all(self): 

84 self.gui.images.visible[:] = True 

85 self.gui.draw() 

86 

87 def constrain_selected(self): 

88 self.gui.images.set_dynamic(self.gui.images.selected, False) 

89 self.gui.draw() 

90 

91 def release_selected(self): 

92 self.gui.images.set_dynamic(self.gui.images.selected, True) 

93 self.gui.draw() 

94 

95 def clear_constraints(self): 

96 # This clears *all* constraints. But when we constrain, we 

97 # only add FixAtoms.... 

98 for atoms in self.gui.images: 

99 atoms.constraints = [] 

100 self.gui.draw()