root / ase / gui / execute.py @ 18
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 |