class ScriptText(TextScroll):
    def __init__(self, conn, suite, trait, script):
        self.conn = conn
        self.suite = suite
        self.trait = trait
        self.script = TraitScript(self.conn, self.suite)
        self.script.set_trait(trait)
        self.current_script = script
        text = self.script.read_script(self.current_script)
        TextScroll.__init__(self, text)
        

    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')
        print path, tmp
        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)