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