Statistiques
| Révision :

root / ase / gui / repeat.py @ 1

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

1 1 tkerber
#!/usr/bin/env python
2 1 tkerber
import gtk
3 1 tkerber
from math import sqrt
4 1 tkerber
5 1 tkerber
import numpy as np
6 1 tkerber
7 1 tkerber
from ase.gui.languages import translate as _
8 1 tkerber
from ase.gui.widgets import pack, Help
9 1 tkerber
10 1 tkerber
11 1 tkerber
class Repeat(gtk.Window):
12 1 tkerber
    def __init__(self, gui):
13 1 tkerber
        gtk.Window.__init__(self)
14 1 tkerber
        self.set_title('Repeat')
15 1 tkerber
        vbox = gtk.VBox()
16 1 tkerber
        pack(vbox, gtk.Label(_('Repeat atoms:')))
17 1 tkerber
        self.repeat = [gtk.Adjustment(r, 1, 9, 1) for r in gui.images.repeat]
18 1 tkerber
        pack(vbox, [gtk.SpinButton(r, 0, 0) for r in self.repeat])
19 1 tkerber
        for r in self.repeat:
20 1 tkerber
            r.connect('value-changed', self.change)
21 1 tkerber
        button = pack(vbox, gtk.Button('Set unit cell'))
22 1 tkerber
        button.connect('clicked', self.set_unit_cell)
23 1 tkerber
        self.add(vbox)
24 1 tkerber
        vbox.show()
25 1 tkerber
        self.show()
26 1 tkerber
        self.gui = gui
27 1 tkerber
28 1 tkerber
    def change(self, adjustment):
29 1 tkerber
        self.gui.images.repeat_images([int(r.value) for r in self.repeat])
30 1 tkerber
        self.gui.set_coordinates()
31 1 tkerber
        return True
32 1 tkerber
33 1 tkerber
    def set_unit_cell(self, button):
34 1 tkerber
        self.gui.images.A *= self.gui.images.repeat.reshape((3, 1))
35 1 tkerber
        self.gui.images.E *= self.gui.images.repeat.prod()
36 1 tkerber
        self.gui.images.repeat = np.ones(3, int)
37 1 tkerber
        for r in self.repeat:
38 1 tkerber
            r.value = 1
39 1 tkerber
        self.gui.set_coordinates()