root / ase / gui / repeat.py @ 20
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 |
|