Пример #1
0
        def openFirstFile(selected, error):
            if not error:
                if len(selected) == 1 and Utils.queryFileExtension(
                        selected[0], interop.getSceneFiles()):
                    if not interop.getCurrentSceneFile() == selected[0]:
                        result = QtWidgets.QMessageBox.question(
                            interop.main_parent_window(), "Open Scene?",
                            "Do you want to open the checked out scene?",
                            QtWidgets.QMessageBox.Yes
                            | QtWidgets.QMessageBox.No)

                        if result == QtWidgets.QMessageBox.StandardButton.Yes:
                            interop.openScene(selected[0])
Пример #2
0
    def openSelectedFile(self, *args):
        index = self.tableWidget.currentRow()
        item = self.entries[index]
        fileName = item['File']
        filePath = item['Folder']

        depotFile = os.path.join(filePath, fileName)

        try:
            result = self.p4.run_fstat(depotFile)[0]
            clientFile = result['clientFile']

            if Utils.queryFileExtension(depotFile, interop.getSceneFiles()):
                interop.openScene(clientFile)
            else:
                Utils.open_file(clientFile)
        except P4Exception as e:
            displayErrorUI(e)
Пример #3
0
    def populateFileRevisions(self, *args):
        self.statusBar.showMessage("")

        try:
            index = self.fileTree.selectedIndexes()
        except IndexError as e:
            Utils.p4Logger().error(e)
            raise

        if not index or not index[0].internalPointer().data:
            return
        index = index[0]

        try:
            name, filetype, time, action, change, fullname = index.internalPointer(
            ).data
        except ValueError as e:
            Utils.p4Logger().info(index.internalPointer().data)
            raise e

        self.getRevisionBtn.setEnabled(False)
        self.getLatestBtn.setEnabled(False)
        self.getPreviewBtn.setEnabled(False)

        if filetype == 'Folder':
            self.getRevisionBtn.setVisible(False)
            self.getLatestBtn.setVisible(False)
            self.getPreviewBtn.setVisible(False)
            self.isSceneFile = False
            self.clearRevisions()
            return
        else:
            self.getRevisionBtn.setVisible(True)
            self.getLatestBtn.setVisible(True)
            self.getPreviewBtn.setVisible(True)

        if Utils.queryFileExtension(fullname, interop.getSceneFiles()):
            self.getPreviewBtn.setEnabled(True)
            self.getPreviewBtn.setText("Preview Scene Revision")
            self.isSceneFile = True
        else:
            self.getPreviewBtn.setText("Preview File Revision")
            self.isSceneFile = False

        try:
            with self.p4.at_exception_level(P4.RAISE_ERRORS):
                files = self.p4.run_filelog("-l", fullname)
        except P4Exception as e:
            # TODO - Better error handling here, what if we can't connect etc
            #eMsg, type = parsePerforceError(e)
            self.statusBar.showMessage("{0} isn't on client".format(
                os.path.basename(fullname)))
            self.clearRevisions()
            self.getLatestBtn.setEnabled(False)
            self.getPreviewBtn.setEnabled(False)
            return

        self.getLatestBtn.setEnabled(True)
        self.getPreviewBtn.setEnabled(True)

        try:
            with self.p4.at_exception_level(P4.RAISE_ERRORS):
                p4FileInfo = self.p4.run_fstat(fullname)

            if p4FileInfo:
                fileInfo = p4FileInfo[0]

                if 'otherLock' in fileInfo:
                    self.statusBar.showMessage(
                        "{0} currently locked by {1}".format(
                            os.path.basename(fullname),
                            fileInfo['otherLock'][0]))

                    if fileInfo['otherLock'][0].split('@')[0] != self.p4.user:
                        self.getRevisionBtn.setEnabled(False)
                elif 'otherOpen' in fileInfo:
                    self.statusBar.showMessage(
                        "{0} currently opened by {1}".format(
                            os.path.basename(fullname),
                            fileInfo['otherOpen'][0]))

                    if fileInfo['otherOpen'][0].split('@')[0] != self.p4.user:
                        self.getRevisionBtn.setEnabled(False)
                else:
                    self.statusBar.showMessage(
                        "{0} currently opened by {1}@{2}".format(
                            os.path.basename(fullname), self.p4.user,
                            self.p4.client))
                    self.getRevisionBtn.setEnabled(True)

        except P4Exception:
            self.statusBar.showMessage("{0} is not checked out".format(
                os.path.basename(fullname)))
            self.getRevisionBtn.setEnabled(True)

        # Generate revision dictionary
        self.fileRevisions = []

        if files:
            Utils.p4Logger().debug('filelog(%s):%s' % (fullname, files))

            for revision in files[0].each_revision():
                self.fileRevisions.append({
                    "revision": revision.rev,
                    "action": revision.action,
                    "date": revision.time,
                    "desc": revision.desc,
                    "user": revision.user,
                    "client": revision.client
                })

            self.tableWidget.setRowCount(len(self.fileRevisions))

            # Map a file action to the path of it's UI icon
            actionToIcon = {
                'edit': os.path.join(interop.getIconPath(), "File0440.png"),
                'add': os.path.join(interop.getIconPath(), "File0242.png"),
                'delete': os.path.join(interop.getIconPath(), "File0253.png"),
                'move/delete': os.path.join(interop.getIconPath(),
                                            "File0253.png"),
                'purge': os.path.join(interop.getIconPath(), "File0253.png")
            }

            # Populate table
            for i, revision in enumerate(self.fileRevisions):
                columns = [("#{0}".format(revision['revision']), None, False),
                           (revision['user'], None, False),
                           (revision['action'].capitalize(),
                            actionToIcon.get(revision['action']), False),
                           (revision['date'], None, False),
                           (revision['client'], None, False),
                           (revision['desc'], None, True)]

                for j, data in enumerate(columns):
                    self.setRevisionTableColumn(i, j, *data)

        self.tableWidget.resizeColumnsToContents()
        self.tableWidget.resizeRowsToContents()
        self.tableWidget.horizontalHeader().setStretchLastSection(True)