class ParentAssigner(BaseAssigner): def __init__(self, parent, trait, suite, name='ParentAssigner'): self.app = get_application_pointer() self.conn = self.app.conn self.suite = suite self.trait = Trait(self.conn, suite=self.suite) self.trait.set_trait(trait) BaseAssigner.__init__(self, parent, name=name) self.connect(self, SIGNAL('okClicked()'), self.slotInsertNewParents) def initView(self): traits = self.trait.get_trait_list() traits.sort() parents = self.trait.parents() traits = [t for t in traits if t != self.trait.current_trait] abox = self.listBox.availableListBox() sbox = self.listBox.selectedListBox() avail_traits = [t for t in traits if t not in parents] for trait in avail_traits: r = QListBoxText(abox, trait) for trait in parents: r = QListBoxText(sbox, trait) def slotInsertNewParents(self): sbox = self.listBox.selectedListBox() parents = [str(sbox.item(n).text()) for n in range(sbox.numRows())] self.trait.update_parents(parents)
class ParentAssigner(BaseAssigner): def __init__(self, parent, trait, suite, name='ParentAssigner'): self.app = get_application_pointer() self.conn = self.app.conn self.suite = suite self.trait = Trait(self.conn, suite=self.suite) self.trait.set_trait(trait) BaseAssigner.__init__(self, parent, name=name) self.connect(self, SIGNAL('okClicked()'), self.slotInsertNewParents) def initView(self): traits = self.trait.get_trait_list() traits.sort() parents = self.trait.parents() traits = [t for t in traits if t != self.trait.current_trait] abox = self.listBox.availableListBox() sbox = self.listBox.selectedListBox() avail_traits = [t for t in traits if t not in parents] for trait in avail_traits: r = QListBoxText(abox, trait) for trait in parents: r = QListBoxText(sbox, trait) def slotInsertNewParents(self): sbox = self.listBox.selectedListBox() parents = [str(sbox.item(n).text()) for n in range(sbox.numRows())] self.trait.update_parents(parents)
def readdir(self, fspath, offset): dirents = ['.', '..'] if fspath == '/': dirents.extend(self.db.suitecursor.get_suites()) else: logging.warn("Need to handle %s" % fspath) depth = fspath.count('/') logging.warn('depth is %d' % depth) if depth == 1: suite = os.path.basename(fspath) logging.info('fspath is %s' % fspath) logging.info('suite is %s' % suite) traitdb = Trait(self.conn, suite) traits = traitdb.get_trait_list() dirents.extend(traits) elif depth == 2: trait = os.path.basename(fspath) dirname = os.path.dirname(fspath) suite = os.path.basename(dirname) logging.info('depth 2, suite %s, trait %s' % (suite, trait)) dirents.extend(['scripts', 'templates']) elif depth == 3: ignore, suite, trait, ftype = fspath.split('/') logging.info('ftype is %s' % ftype) logging.info('suite is %s' % suite) logging.info('trait is %s' % trait) traitdb = Trait(self.conn, suite) traitdb.set_trait(trait) if ftype == 'scripts': scripts = traitdb._scripts.scripts(trait=trait) scripts = [row.script for row in scripts] dirents.extend(scripts) else: logging.warn('unable to handle ftype %s' % ftype) else: logging.warn('unable to handle depth of %d' % depth) for ent in dirents: yield fuse.Direntry(ent)
class TraitMainWindow(SimpleSplitWindow): def __init__(self, app, parent, suite): SimpleSplitWindow.__init__(self, app, parent, TraitView, 'TraitMainWindow') self.app = app self.initActions() self.initMenus() self.initToolbar() self.conn = app.conn self.suite = suite self.cfg = app.cfg self.cursor = StatementCursor(self.conn) self.trait = Trait(self.conn, suite=suite) self.refreshListView() self.view.set_suite(suite) self.resize(600, 800) self.setCaption('%s traits' % suite) def initActions(self): collection = self.actionCollection() self.quitAction = KStdAction.quit(self.close, collection) self.newTraitAction = KStdAction.openNew(self.newTrait, collection) def initMenus(self): mainMenu = KPopupMenu(self) menus = [mainMenu] self.menuBar().insertItem('&Main', mainMenu) self.menuBar().insertItem('&Help', self.helpMenu('')) self.newTraitAction.plug(mainMenu) self.quitAction.plug(mainMenu) def initToolbar(self): toolbar = self.toolBar() self.newTraitAction.plug(toolbar) self.quitAction.plug(toolbar) def initlistView(self): self.listView.setRootIsDecorated(True) self.listView.addColumn('group') def refreshListView(self): self.listView.clear() trait_folder = KListViewItem(self.listView, 'traits') for trait in self.trait.get_trait_list(): item = KListViewItem(trait_folder, trait) item.trait = trait def newTrait(self): dialog = SimpleRecordDialog(self, ['trait']) dialog.connect(dialog, SIGNAL('okClicked()'), self.insertNewTrait) self._dialog = dialog def insertNewTrait(self): dialog = self._dialog data = dialog.getRecordData() trait = data['trait'] self.trait.create_trait(trait) self.refreshListView() def selectionChanged(self): current = self.listView.currentItem() if hasattr(current, 'trait'): print 'trait is', current.trait self.view.set_trait(current.trait) if hasattr(current, 'suite'): print 'suite is', current.suite if hasattr(current, 'widget'): print 'widget is', current.widget
class TraitMainWindow(BaseSplitWindow, BasePaellaWindow): def __init__(self, parent, suite): BaseSplitWindow.__init__(self, parent, TraitView, name='TraitMainWindow-%s' % suite) print 'in TraitMainWindow suite is', suite # from BasePaellaWindow self.initPaellaCommon() self.initActions() self.initMenus() self.initToolbar() self.mainView.set_suite(suite) self.setCaption('%s traits' % suite) # these values should be in a configfile self.resize(500, 800) self.splitter.setSizes([100, 400]) self.trait = Trait(self.conn, suite=suite) self.refreshListView() # dialog pointers self._import_export_dirsel_dialog = None def initActions(self): collection = self.actionCollection() self.quitAction = KStdAction.quit(self.close, collection) self.newTraitAction = KStdAction.openNew(self.newTrait, collection) self.importTraitAction = KStdAction.open(self.slotImportTrait, collection) self.exportTraitAction = KStdAction.saveAs(self.slotExportTrait, collection) def initMenus(self): mainmenu = KPopupMenu(self) menus = [mainmenu] menubar = self.menuBar() menubar.insertItem('&Main', mainmenu) menubar.insertItem('&Help', self.helpMenu('')) self.newTraitAction.plug(mainmenu) self.importTraitAction.plug(mainmenu) self.importTraitAction.setText('Import trait') self.exportTraitAction.plug(mainmenu) self.exportTraitAction.setText('Export trait') self.quitAction.plug(mainmenu) def initToolbar(self): toolbar = self.toolBar() self.newTraitAction.plug(toolbar) self.importTraitAction.plug(toolbar) self.exportTraitAction.plug(toolbar) self.quitAction.plug(toolbar) def initlistView(self): self.listView.addColumn('trait') def refreshListView(self): self.listView.clear() for trait in self.trait.get_trait_list(): item = KListViewItem(self.listView, trait) item.trait = trait def newTrait(self): win = NewTraitDialog(self) win.frame.text_label.setText('Add a new trait.') win.connect(win, SIGNAL('okClicked()'), self.insertNewTrait) win.show() self._new_trait_dialog = win def insertNewTrait(self): dialog = self._new_trait_dialog trait = dialog.getRecordData()['name'] self.trait.create_trait(trait) self.refreshListView() def slotImportTrait(self): self._select_import_export_directory('import') def slotExportTrait(self): self._select_import_export_directory('export') def _select_import_export_directory(self, action): default_path = path(self.app.cfg.get('database', 'default_path')).expand() win = KDirSelectDialog(default_path, False, self) win.connect(win, SIGNAL('okClicked()'), self._import_export_directory_selected) win.db_action = action win.show() self._import_export_dirsel_dialog = win def _import_export_directory_selected(self): win = self._import_export_dirsel_dialog if win is None: raise RuntimeError , "There is no import/export dialog" url = win.url() fullpath = str(url.path()) action = win.db_action if action == 'import': KMessageBox.information(self, "%s trait not implemented yet" % action) elif action == 'export': KMessageBox.information(self, "%s trait not implemented yet" % action) else: KMessageBox.error(self, "action %s is not supported" % action) def selectionChanged(self): item = self.listView.currentItem() self.mainView.set_trait(item.trait)
class TraitMainWindow(BaseSplitWindow, BasePaellaWindow): def __init__(self, parent, suite): BaseSplitWindow.__init__(self, parent, TraitView, name='TraitMainWindow-%s' % suite) print 'in TraitMainWindow suite is', suite # from BasePaellaWindow self.initPaellaCommon() self.initActions() self.initMenus() self.initToolbar() self.mainView.set_suite(suite) self.setCaption('%s traits' % suite) # these values should be in a configfile self.resize(500, 800) self.splitter.setSizes([100, 400]) self.trait = Trait(self.conn, suite=suite) self.refreshListView() # dialog pointers self._import_export_dirsel_dialog = None def initActions(self): collection = self.actionCollection() self.quitAction = KStdAction.quit(self.close, collection) self.newTraitAction = KStdAction.openNew(self.newTrait, collection) self.importTraitAction = KStdAction.open(self.slotImportTrait, collection) self.exportTraitAction = KStdAction.saveAs(self.slotExportTrait, collection) def initMenus(self): mainmenu = KPopupMenu(self) menus = [mainmenu] menubar = self.menuBar() menubar.insertItem('&Main', mainmenu) menubar.insertItem('&Help', self.helpMenu('')) self.newTraitAction.plug(mainmenu) self.importTraitAction.plug(mainmenu) self.importTraitAction.setText('Import trait') self.exportTraitAction.plug(mainmenu) self.exportTraitAction.setText('Export trait') self.quitAction.plug(mainmenu) def initToolbar(self): toolbar = self.toolBar() self.newTraitAction.plug(toolbar) self.importTraitAction.plug(toolbar) self.exportTraitAction.plug(toolbar) self.quitAction.plug(toolbar) def initlistView(self): self.listView.addColumn('trait') def refreshListView(self): self.listView.clear() for trait in self.trait.get_trait_list(): item = KListViewItem(self.listView, trait) item.trait = trait def newTrait(self): win = NewTraitDialog(self) win.frame.text_label.setText('Add a new trait.') win.connect(win, SIGNAL('okClicked()'), self.insertNewTrait) win.show() self._new_trait_dialog = win def insertNewTrait(self): dialog = self._new_trait_dialog trait = dialog.getRecordData()['name'] self.trait.create_trait(trait) self.refreshListView() def slotImportTrait(self): self._select_import_export_directory('import') def slotExportTrait(self): self._select_import_export_directory('export') def _select_import_export_directory(self, action): default_path = path(self.app.cfg.get('database', 'default_path')).expand() win = KDirSelectDialog(default_path, False, self) win.connect(win, SIGNAL('okClicked()'), self._import_export_directory_selected) win.db_action = action win.show() self._import_export_dirsel_dialog = win def _import_export_directory_selected(self): win = self._import_export_dirsel_dialog if win is None: raise RuntimeError, "There is no import/export dialog" url = win.url() fullpath = str(url.path()) action = win.db_action if action == 'import': KMessageBox.information(self, "%s trait not implemented yet" % action) elif action == 'export': KMessageBox.information(self, "%s trait not implemented yet" % action) else: KMessageBox.error(self, "action %s is not supported" % action) def selectionChanged(self): item = self.listView.currentItem() self.mainView.set_trait(item.trait)
class TraitMainWindow(SimpleSplitWindow): def __init__(self, app, parent, suite): SimpleSplitWindow.__init__(self, app, parent, TraitView, 'TraitMainWindow') self.app = app self.initActions() self.initMenus() self.initToolbar() self.conn = app.conn self.suite = suite self.cfg = app.cfg self.cursor = StatementCursor(self.conn) self.trait = Trait(self.conn, suite=suite) self.refreshListView() self.view.set_suite(suite) self.resize(600, 800) self.setCaption('%s traits' % suite) def initActions(self): collection = self.actionCollection() self.quitAction = KStdAction.quit(self.close, collection) self.newTraitAction = KStdAction.openNew(self.newTrait, collection) def initMenus(self): mainMenu = KPopupMenu(self) menus = [mainMenu] self.menuBar().insertItem('&Main', mainMenu) self.menuBar().insertItem('&Help', self.helpMenu('')) self.newTraitAction.plug(mainMenu) self.quitAction.plug(mainMenu) def initToolbar(self): toolbar = self.toolBar() self.newTraitAction.plug(toolbar) self.quitAction.plug(toolbar) def initlistView(self): self.listView.setRootIsDecorated(True) self.listView.addColumn('group') def refreshListView(self): self.listView.clear() trait_folder = KListViewItem(self.listView, 'traits') for trait in self.trait.get_trait_list(): item = KListViewItem(trait_folder, trait) item.trait = trait def newTrait(self): dialog = SimpleRecordDialog(self, ['trait']) dialog.connect(dialog, SIGNAL('okClicked()'), self.insertNewTrait) self._dialog = dialog def insertNewTrait(self): dialog = self._dialog data = dialog.getRecordData() trait = data['trait'] self.trait.create_trait(trait) self.refreshListView() def selectionChanged(self): current = self.listView.currentItem() if hasattr(current, 'trait'): print 'trait is', current.trait self.view.set_trait(current.trait) if hasattr(current, 'suite'): print 'suite is', current.suite if hasattr(current, 'widget'): print 'widget is', current.widget