Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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