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)