Statistiques
| Révision :

root / ase / gui / execute.py

Historique | Voir | Annoter | Télécharger (2,17 ko)

1 1 tkerber
#!/usr/bin/env python
2 1 tkerber
import __future__
3 1 tkerber
import gtk
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
9 1 tkerber
10 1 tkerber
11 1 tkerber
class Execute(gtk.Window):
12 1 tkerber
    def __init__(self, gui):
13 1 tkerber
        gtk.Window.__init__(self)
14 1 tkerber
        #self.window.set_position(gtk.WIN_POS_CENTER)
15 1 tkerber
        #self.window.connect("destroy", lambda w: gtk.main_quit())
16 1 tkerber
        #self.window.connect('delete_event', self.exit)
17 1 tkerber
        self.set_title('Execute')
18 1 tkerber
        vbox = gtk.VBox()
19 1 tkerber
        pack(vbox, gtk.Label('Global: Use n, N, R, A, S:'))
20 1 tkerber
        self.cmd1 = pack(vbox, gtk.Entry(43))
21 1 tkerber
        pack(vbox, gtk.Label('Atoms: Use a, x, y, z, s, Z'))
22 1 tkerber
        self.cmd2 = pack(vbox, gtk.Entry(43))
23 1 tkerber
        #self.cmd1, self.cmd2 = pack(vbox, [gtk.Entry(23),gtk.Entry(23)])
24 1 tkerber
        self.cmd1.connect('activate', self.execute)
25 1 tkerber
        self.cmd2.connect('activate', self.execute)
26 1 tkerber
        self.selected = gtk.CheckButton('Only selected atoms')
27 1 tkerber
        pack(vbox, self.selected)
28 1 tkerber
        self.add(vbox)
29 1 tkerber
        vbox.show()
30 1 tkerber
        self.show()
31 1 tkerber
        self.gui = gui
32 1 tkerber
33 1 tkerber
    def execute(self, widget=None):
34 1 tkerber
        cmd1 = self.cmd1.get_text()
35 1 tkerber
        cmd2 = self.cmd2.get_text()
36 1 tkerber
        if cmd1:
37 1 tkerber
            code1 = compile(cmd1 + '\n', 'execute.py', 'single',
38 1 tkerber
                            __future__.CO_FUTURE_DIVISION)
39 1 tkerber
        if cmd2:
40 1 tkerber
            code2 = compile(cmd2 + '\n', 'execute.py', 'single',
41 1 tkerber
                            __future__.CO_FUTURE_DIVISION)
42 1 tkerber
43 1 tkerber
        gui = self.gui
44 1 tkerber
        images = gui.images
45 1 tkerber
46 1 tkerber
        N = images.nimages
47 1 tkerber
        n = images.natoms
48 1 tkerber
        S = images.selected
49 1 tkerber
        if self.selected.get_active():
50 1 tkerber
            indices = np.where(S)[0]
51 1 tkerber
        else:
52 1 tkerber
            indices = range(n)
53 1 tkerber
54 1 tkerber
        for i in range(N):
55 1 tkerber
            R = images.P[i]
56 1 tkerber
            A = images.A[i]
57 1 tkerber
            #fmax = sqrt(max((F**2).sum(1))
58 1 tkerber
59 1 tkerber
            if cmd1:
60 1 tkerber
                exec code1
61 1 tkerber
62 1 tkerber
            if not cmd2:
63 1 tkerber
                continue
64 1 tkerber
65 1 tkerber
            for a in indices:
66 1 tkerber
                x, y, z = R[a]
67 1 tkerber
                s = S[a]
68 1 tkerber
                Z = images.Z[a]
69 1 tkerber
                #f =
70 1 tkerber
                exec code2
71 1 tkerber
                S[a] = s
72 1 tkerber
                R[a] = x, y, z
73 1 tkerber
74 1 tkerber
        gui.set_frame(gui.frame)
75 1 tkerber
76 1 tkerber
    python = execute