def openDBDoc(self, filepath, mode='a', position=0):
        """
        Open an existing hdf5 file and load it into the tree model.

        :Parameters:

        - `filepath`: full path of the database file we wish to open.
        - `mode`: the opening mode of the database file. It can be 'r'ead-only
          'w'rite or 'a'ppend
        """

        is_open = False
        if self.checkOpening(filepath):
            # Open the database and add it to the tracking system
            db_doc = dbdoc.DBDoc(filepath, mode)
            self.mapDB(filepath, db_doc)

            # Populate the model with the dbdoc
            root_node = rootgroupnode.RootGroupNode(self, db_doc, self.root)
            self.fdelta = frozenset([root_node])
            self.gdelta = frozenset([])
            self.ldelta = frozenset([])
            self.links_delta = frozenset([])
            self.insertRows(position, 1)
            is_open = True

        return is_open
    def __init__(self, vtapp):
        """Create the model.
        """

        # The underlying data structure used to populate the model
        self.root = rootgroupnode.RootGroupNode(self)

        super(DBsTreeModel, self).__init__(parent=None)

        # The dictionary of open databases
        self.__openDBs = {}

        # Create the temporary database that will contain filtered tables
        self.tmp_filepath = u''
        self.tmp_dbdoc = self.__createTempDB()

        # The Cut/CopiedNodeInfo dictionary
        self.ccni = {}
        self.vtapp = vtapp
        self.vtgui = self.vtapp.gui

        # Sets used to populate the model
        self.fdelta = frozenset([])
        self.gdelta = frozenset([])
        self.ldelta = frozenset([])
        self.links_delta = frozenset([])

        self.rowsAboutToBeRemoved.connect(self.closeViews)
示例#3
0
    def createDBDoc(self, filepath, is_tmp_db=False):
        """
        Create a new, empty database (:meth:`vitables.h5db.dbdoc.DBDoc`
        instance).

        :Parameters:

        - `filepath`: the full path of the file being created.
        - `is_tmp_db`: True if the `DBDoc` is tied to the temporary database
        """

        try:
            QtWidgets.qApp.setOverrideCursor(
                QtGui.QCursor(QtCore.Qt.WaitCursor))
            # Create the dbdoc
            try:
                db_doc = dbdoc.DBDoc(filepath, 'w', is_tmp_db)
            except (tables.NodeError, OSError):
                log.error(
                    translate(
                        'DBsTreeModel',
                        """File creation failed due to unknown"""
                        """reasons! Please, have a look to the """
                        """last error displayed in the logger. If you """
                        """think it's a bug, please report it to """
                        """developers.""", 'A file creation error'))
                return None

            # Track the just created dbdoc
            self.mapDB(filepath, db_doc)

            # Populate the model with the dbdoc
            root = rootgroupnode.RootGroupNode(self, db_doc, self.root,
                                               is_tmp_db)
            self.fdelta = frozenset([root])
            self.gdelta = frozenset([])
            self.ldelta = frozenset([])
            self.links_delta = frozenset([])
            self.insertRows(0, 1)
        finally:
            QtWidgets.qApp.restoreOverrideCursor()
        return db_doc