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)