Statistiques
| Révision :

root / ase / gui / repeat.py @ 16

Historique | Voir | Annoter | Télécharger (1,24 ko)

1
#!/usr/bin/env python
2
import gtk
3
from math import sqrt
4

    
5
import numpy as np
6

    
7
from ase.gui.languages import translate as _
8
from ase.gui.widgets import pack, Help
9

    
10

    
11
class Repeat(gtk.Window):
12
    def __init__(self, gui):
13
        gtk.Window.__init__(self)
14
        self.set_title('Repeat')
15
        vbox = gtk.VBox()
16
        pack(vbox, gtk.Label(_('Repeat atoms:')))
17
        self.repeat = [gtk.Adjustment(r, 1, 9, 1) for r in gui.images.repeat]
18
        pack(vbox, [gtk.SpinButton(r, 0, 0) for r in self.repeat])
19
        for r in self.repeat:
20
            r.connect('value-changed', self.change)
21
        button = pack(vbox, gtk.Button('Set unit cell'))
22
        button.connect('clicked', self.set_unit_cell)
23
        self.add(vbox)
24
        vbox.show()
25
        self.show()
26
        self.gui = gui
27

    
28
    def change(self, adjustment):
29
        self.gui.images.repeat_images([int(r.value) for r in self.repeat])
30
        self.gui.set_coordinates()
31
        return True
32
        
33
    def set_unit_cell(self, button):
34
        self.gui.images.A *= self.gui.images.repeat.reshape((3, 1))
35
        self.gui.images.E *= self.gui.images.repeat.prod()
36
        self.gui.images.repeat = np.ones(3, int)
37
        for r in self.repeat:
38
            r.value = 1
39
        self.gui.set_coordinates()
40