Statistiques
| Révision :

root / ase / gui / settings.py @ 16

Historique | Voir | Annoter | Télécharger (3,26 ko)

1
#!/usr/bin/env python
2
import gtk
3
from ase.gui.widgets import pack
4
from ase.gui.languages import translate as _
5

    
6
class Settings(gtk.Window):
7
    def __init__(self, gui):
8
        gtk.Window.__init__(self)
9
        self.set_title('Settings')
10
        self.gui = gui
11
        vbox = gtk.VBox()
12

    
13
        # Constraints
14
        a = pack(vbox, gtk.Label())
15
        a.set_markup('<span size="larger" underline="single">'
16
                     'Constraints:</span>')
17
        a, b = pack(vbox, [gtk.Button(_('Constrain')),
18
                           gtk.Label('/'),
19
                           gtk.Button(_('release')),                        
20
                           gtk.Label(_(' selected atoms'))])[::2]
21
        a.connect('clicked', self.constrain_selected)
22
        b.connect('clicked', self.release_selected)
23
        a = pack(vbox, gtk.Button(_('Constrain immobile atoms')))
24
        a.connect('clicked', self.immobile)
25
        a = pack(vbox, gtk.Button(_('Clear all constraints')))
26
        a.connect('clicked', self.clear_constraints)
27

    
28
        # Visibility
29
        a = pack(vbox, gtk.Label())
30
        a.set_markup('\n<span size="larger" underline="single">'
31
                     'Visibility:</span>')
32
        a, b = pack(vbox, [gtk.Button(_('Hide')),
33
                           gtk.Label('/'),
34
                           gtk.Button(_('show')),
35
                           gtk.Label(_(' selected atoms'))])[::2]
36
        a.connect('clicked', self.hide_selected)
37
        b.connect('clicked', self.show_selected)
38
        a = pack(vbox, gtk.Button(_('View all atoms')))
39
        a.connect('clicked', self.view_all)
40

    
41
        # Miscellaneous
42
        a = pack(vbox, gtk.Label())
43
        a.set_markup('\n<span size="larger" underline="single">'
44
                     'Miscellaneous:</span>')
45
        self.scale = gtk.Adjustment(value=.89, lower=0.2, upper=2.0,
46
                                    step_incr=0.1, page_incr=0.5)
47
        pack(vbox, [gtk.Label(_('Scale atomic radii:')),
48
                    gtk.SpinButton(self.scale, climb_rate=0, digits=2)])
49
        self.scale.connect('value-changed', self.scale_radii)
50

    
51
        # A close button
52
        pack(vbox, gtk.Label(_('\n')))
53
        close = pack(vbox, gtk.Button(_('Close')))
54
        close.connect('clicked', lambda widget: self.destroy())
55

    
56
        # Add elements and show frame
57
        self.add(vbox)
58
        vbox.show()
59
        self.show()
60

    
61
    def scale_radii(self, adjustment):
62
        self.gui.images.set_radii(float(self.scale.value))
63
        self.gui.draw()
64
        return True
65

    
66
    def hide_selected(self, button):
67
        self.gui.images.visible[self.gui.images.selected] = False
68
        self.gui.draw()
69

    
70
    def show_selected(self, button):
71
        self.gui.images.visible[self.gui.images.selected] = True
72
        self.gui.draw()
73

    
74
    def view_all(self, button):
75
        self.gui.images.visible[:] = True
76
        self.gui.draw()
77

    
78
    def constrain_selected(self, button):
79
        self.gui.images.dynamic[self.gui.images.selected] = False
80
        self.gui.draw()
81

    
82
    def release_selected(self, button):
83
        self.gui.images.dynamic[self.gui.images.selected] = True
84
        self.gui.draw()
85

    
86
    def immobile(self, button):
87
        self.gui.images.set_dynamic()
88
        self.gui.draw()
89

    
90
    def clear_constraints(self, button):
91
        self.gui.images.dynamic[:] = True
92
        self.gui.draw()