def __init__(self, conn, suite):
     self.conn = conn
     self.suite = suite
     self.traits = Traits(self.conn, self.suite)
     self.edit_menu = make_menu(SCRIPTS, self.modify_trait, name='edit')
     self.diff_menu = make_menu(SCRIPTS, self.modify_trait, name='diff')
     self.menu = make_menu(['edit', 'diff'], self.edit_menu)
     self.menu['edit'].set_submenu(self.edit_menu)
     self.menu['diff'].set_submenu(self.diff_menu)
     ListNoteBook.__init__(self)
     self.reset_rows()
class TraitScriptBrowser(ListNoteBook):
    def __init__(self, conn, suite):
        self.conn = conn
        self.suite = suite
        self.traits = Traits(self.conn, self.suite)
        self.edit_menu = make_menu(SCRIPTS, self.modify_trait, name='edit')
        self.diff_menu = make_menu(SCRIPTS, self.modify_trait, name='diff')
        self.menu = make_menu(['edit', 'diff'], self.edit_menu)
        self.menu['edit'].set_submenu(self.edit_menu)
        self.menu['diff'].set_submenu(self.diff_menu)
        ListNoteBook.__init__(self)
        self.reset_rows()

    def modify_trait(self, menuitem, action):
        parent = menuitem.get_parent()
        command = parent.get_name()
        rows = self.get_selected_data()
        if len(rows):
            trait = rows[0].trait
            print action, trait
            if command == 'edit':
                if action not in self.pages[trait].pages:
                    self.pages[trait].new_script(action)
                else:
                    self.pages[trait].edit_script(None, action, None)
            elif command == 'diff':
                print 'diff', action
                AllScriptsDialog('which script?', self.conn, self.suite)
            
        else:
            dialogs.Message('select a trait first')

    def reset_rows(self):
        rows = self.traits.select(fields=['trait'])
        self.set_rows(rows)
        self.set_row_select(self.trait_selected)

    def trait_selected(self, listbox, row, column, event):
        trait = listbox.get_selected_data()[0].trait
        self.select_trait(trait)

    def select_trait(self, trait):
        if trait not in self.pages:
            newpage = ScriptNotebook(self.conn, self.suite, trait)
            self.append_page(newpage, trait)
        self.set_current_page(trait)