так я ж как раз про этоNick писал(а):хмм... а чем тебе не нравится подход ngcgui?
Может просто его доделать, например.......
только оргинал на тикле - а я пытаюсь на питоне и glade что то подобное сделать
не понял - загрузку чего ...Nick писал(а):Как ты вызываешь загрузку?
открываем емс
нажимаем "Открыть" и загружаем наш скрипт,ну примерно такой:
(для просмотра содержимого нажмите на ссылку)
он делает там все свои дела и выдает в sys.stdout О-код примерно такого вида:
Код: Выделить всё
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys ,os
import re
import pygtk
import gtk
from gladevcp.gladebuilder import GladeBuilder
import gladevcp
import time
class Widgets:
def __init__(self, xml):
self._xml = xml
def __getattr__(self, attr):
r = self._xml.get_object(attr)
if r is None: raise AttributeError, "No widget %r" % attr
return r
def __getitem__(self, attr):
r = self._xml.get_object(attr)
if r is None: raise IndexError, "No widget %r" % attr
class Test:
def color (self, data=None):
i=0
while i<3:
self.widgets.button14.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#FF0095'))
time.sleep(2)
self.widgets.button14.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#F000FF'))
time.sleep(2)
i+=1
def open(self, widget, text_filter=None, all_filter=None):
filename=None
dialog=gtk.FileChooserDialog(title="Open ngcgui_file", action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
if (self.text_filter != None) and (self.all_filter != None):
dialog.add_filter(self.text_filter)
dialog.add_filter(self.all_filter)
dialog.set_current_folder('~/emc2/nc_files')
response = dialog.run()
# if response == gtk.RESPONSE_OK:
self.filename = dialog.get_filename()
# elif response == gtk.RESPONSE_CANCEL:
# print 'Cancel open'
dialog.destroy()
self.restart1 (self)
(dirname, fname) = os.path.split(self.filename)
(self.shortname, extension) = os.path.splitext(fname)
n=[self.shortname,'.png']
self.imj=''.join(n)
if os.path.exists(str(self.imj)):
self.widgets.image2.set_from_file(str(self.imj))
else:
self.widgets.image2.set_from_file('start.jpg')
self.update(self)
def update(self, data=None):
f = open(self.filename, "r")
lines = f.readlines()
x=0
q=0
while x < len(lines):
if re.search("#\d+ *[(*]", lines[x]):
vel=re.findall('[(][=][-]?.?0?\d*[.]?\d*', lines[x])
#парсим комментарии
dat=re.findall('[(].+', lines[x])
dat1=re.findall('\s+.+', dat[0])
l=dat1[0]
dat2=l[:-2]
if len(dat2) != 0:
self.ent1[q].set_text(dat2)
else:
self.ent1[q].set_text('')
vel1=re.findall('[-]?\d+[.]?\d*', vel[0])
if len(vel) != 0:
self.ent[q].set_text(vel1[0])
else:
self.ent[q].set_text('')
q+=1
x+=1
#скрываем незанятые поля
t=0
while t+q < 14 :
for r in self.ent :
w=self.ent[q+t]
w.hide()
t+=1
print q,'q'
tt=0
while tt+q < 14 :
for k in self.ent1 :
wd=self.ent1[q+tt]
wd.hide()
tt+=1
self.q=q
f.close()
def make (self,widget, data=None):
self.d = {
1:self.widgets.entry1.get_text(),2:self.widgets.entry2.get_text(),
3:self.widgets.entry3.get_text(),4:self.widgets.entry4.get_text(),
5:self.widgets.entry5.get_text(),6:self.widgets.entry6.get_text(),
7:self.widgets.entry7.get_text(),8:self.widgets.entry8.get_text(),
9:self.widgets.entry9.get_text(),10:self.widgets.entry10.get_text(),
11:self.widgets.entry11.get_text(),12:self.widgets.entry12.get_text(),
13:self.widgets.entry13.get_text(),14:self.widgets.entry14.get_text()
}
for i in range(self.q):
v=re.findall('[^0-9\-\.]', self.d.get(i+1))
if len(v) != 0 or self.d.get(i+1)=='' or self.d.get(i+1)=='.':
self.on_info(self)
self.ent[i].set_text('')
self.ebox[i].modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#8E898D'))
self.ent[i].grab_focus ()
else :
self.ebox[i].modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#EDECEB'))
# self.widgets.button3.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#6F7269'))
def finish (self, data=None):
self.cwd = os.getcwd()
t=[self.cwd,'/ngcgui.ngc']
self.imj=''.join(t)
f = open(str(self.imj), "w")
fname0=re.findall('\w+\.', self.filename)
fname1=re.findall('\w+', fname0[0])
ser=' '
n=['o','<', fname1[0], '>','call', '\n','M2']
h=1
m=5
while h <= self.q:
n.insert(m, '[')
m+=1
n.insert(m, self.d.get(h))
m+=1
n.insert(m, ']')
h+=1
m+=1
j=ser.join(n)
f.write(j)
sys.stdout.write(j)
f.close()
gtk.main_quit()
def restart1 (self, data=None):
for i in range(14) :
w=self.ent[i]
wd=self.ent1[i]
wd.show()
w.show()
def restart (self, data=None):
for i in range(14) :
w=self.ent[i]
wd=self.ent1[i]
wd.show()
w.show()
def on_info(self, widget):
md = gtk.MessageDialog(parent=None, flags=0,
type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_CLOSE,
message_format="Ошибка ввода")
md.run()
md.destroy()
def image1(self, widget):
if os.path.exists(str(self.imj)):
n=[self.shortname,'.png']
self.imj=''.join(n)
self.widgets.image2.set_from_file(str(self.imj))
else:
self.widgets.image2.set_from_file('start.jpg')
def image2(self, widget):
if os.path.exists(str(self.imj)):
n=[self.shortname,'1.png']
self.imj=''.join(n)
self.widgets.image2.set_from_file(str(self.imj))
else:
self.widgets.image2.set_from_file('start.jpg')
def image3(self, widget):
if os.path.exists(str(self.imj)):
n=[self.shortname,'2.png']
self.imj=''.join(n)
self.widgets.image2.set_from_file(str(self.imj))
else:
self.widgets.image2.set_from_file('start.jpg')
def __init__(self ):
self.text_filter=gtk.FileFilter()
self.text_filter.set_name(".ngc")
# self.text_filter.add_mime_type("*.ngc")
self.text_filter.add_pattern("*.ngc")
self.all_filter=gtk.FileFilter()
self.all_filter.set_name(".All_Files")
self.all_filter.add_pattern("*")
self.builder = gtk.Builder()
self.builder.add_from_file("1.glade")
self.builder.connect_signals(self)
self.builder.get_object("window1").maximize()
self.builder.get_object("window1").show()
self.widgets = Widgets(self.builder)
self.ebox=[
self.widgets .eventbox1,self.widgets .eventbox2,
self.widgets .eventbox3,self.widgets .eventbox4,
self.widgets .eventbox5,self.widgets .eventbox6,
self.widgets .eventbox7,self.widgets .eventbox8,
self.widgets .eventbox9,self.widgets .eventbox10,
self.widgets .eventbox11,self.widgets .eventbox12,
self.widgets .eventbox13,self.widgets .eventbox14]
self.ent = [
self.widgets.entry1,self.widgets.entry2,
self.widgets.entry3,self.widgets.entry4,
self.widgets.entry5,self.widgets.entry6,
self.widgets.entry7,self.widgets.entry8,
self.widgets.entry9,self.widgets.entry10,
self.widgets.entry11,self.widgets.entry12,
self.widgets.entry13,self.widgets.entry14
]
self.ent1 = [
self.widgets.entry15,self.widgets.entry16,
self.widgets.entry17,self.widgets.entry18,
self.widgets.entry19,self.widgets.entry20,
self.widgets.entry21,self.widgets.entry22,
self.widgets.entry23,self.widgets.entry24,
self.widgets.entry25,self.widgets.entry26,
self.widgets.entry27,self.widgets.entry28
]
self.widgets.image2.set_from_file('1.gif')
self.widgets.image1.set_from_file('1.png')
self.widgets.image3.set_from_file('1.png')
self.widgets.window1.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#C3C8D2'))
self.widgets.entry23.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#C3C8D2'))
if __name__ == "__main__":
main = Test()
gtk.main()
Код: Выделить всё
o < 1sfer > call [ 30 ] [ 20 ] [ 10 ] [ 1 ] [ 0 ] [ 8 ] [ 400 ]
M2так у меня проблема - что емс этот код вроде бы не загружает по вышеописанной последовательности
но если жмем "перегрузить" - то все пучком...
