class ScriptNotebook(MyNotebook): def __init__(self, conn, suite, trait): MyNotebook.__init__(self) self.conn = conn self.suite = suite self.trait = trait self.script = TraitScript(self.conn, self.suite) self.script.set_trait(trait) self.menu = SimpleMenu() for row in self.script.scripts(): name = row.script sfile = self.script.scriptfile(name) self.append_script(name, sfile.read()) sfile.close() def populate_menu(self, widget, mainmenu, tmenu): menuitem = widget.get_name() populate_menu(mainmenu, self.trait, [menuitem], self.edit_script) def edit_script(self, menuitem, name, parent): sfile = self.script.get(name) tmp, path = tempfile.mkstemp('paella', 'script') script = sfile.read() sfile.close() tmp = file(path, 'w') tmp.write(script) tmp.close() os.system('$EDITOR %s' %path) tmp = file(path, 'r') mod = tmp.read() tmp.seek(0) if mod != script: print 'script modified' self.script.save_script(name, tmp) self.set_text(name, mod) os.remove(path) def new_script(self, name): if self.script.get(name) is not None: dialogs.Message('script exists') raise Error, 'script exists' tmp = strfile() self.script.insert_script(name, tmp) self.append_script(name) tmp.close() self.edit_script(None, name, None) def append_script(self, name, text=''): page = TextScroll(text, name=name) page.tview.connect('populate-popup', self.populate_menu, self.menu) self.append_page(page, name) def set_text(self, name, text): self.pages[name].set_text(text)