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