Beispiel #1
0
    def __init__(self, parent=None):
        super(MIBBookmarkList, self).__init__(parent)

        self.setSelectionMode(self.NoSelection)
        self.setAcceptDrops(True)
        self.setDragDropMode(self.DropOnly)
        self.setFocusPolicy(QtCore.Qt.NoFocus)
        self.setMouseTracking(True)
        self.setSpacing(1)

        # Local
        self.actionItem = None
        self.dropPaths = None

        # Looks
        self.neutralBrush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 15))
        self.hoverBrush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 35))
        self.activeBrush = QtGui.QBrush(QtGui.QColor(80, 180, 50, 80))

        # Context Menu
        self.contextMenu = QtWidgets.QMenu()

        # Menu Actions
        renamePreset = self.contextMenu.addAction("Rename")
        renamePreset.triggered.connect(self.renamePreset)
        removePreset = self.contextMenu.addAction("Remove")
        removePreset.triggered.connect(self.removePreset)

        # Init
        homePreset = self.addPreset('Home', utils.getHomePath())
        # Override icon
        homePreset.setIcon(
            QtGui.QIcon(
                QtGui.QPixmap(
                    utils.getCustomIconPath(cfg.resourcePath, 'home.png'))))
Beispiel #2
0
 def addPreset(self, presetName, presetValue, new=False):
     if self.findPresetItem(presetName):
         return
     presetType = self.getPresetType(presetValue)
     presetData = (presetType, presetValue)
     iconPath = utils.getCustomIconPath(cfg.resourcePath,
                                        '%s.png' % presetType)
     presetItem = self.createPresetItem(presetName, presetData, iconPath)
     self.addItem(presetItem)
     if new:
         self.updatePreset(presetItem, presetValue)
     self.sortPresetItems()
     return presetItem
Beispiel #3
0
    def createItem(self, tp):
        '''Create new thumbnail item
        '''
        newItem = QtWidgets.QListWidgetItem(tp.sourceName)
        newItem.setData(32, tp)
        newItem.setTextAlignment(QtCore.Qt.AlignHCenter
                                 | QtCore.Qt.AlignBottom)
        newItem.setIcon(
            QtGui.QIcon(
                QtGui.QPixmap(
                    utils.getCustomIconPath(cfg.resourcePath, 'default.png'))))
        newItem.setToolTip(tp.sourcePath)
        self.setItemSize(newItem)
        self.addItem(newItem)

        #cache and map
        self._itemCache[tp.uuid] = newItem
Beispiel #4
0
    def startDrag(self, supportedActions):
        drag = QtGui.QDrag(self)

        # Gather items source urls
        imageUrls = []
        for item in self.selectedItems():
            tp = item.data(32)
            sourceUrl = QtCore.QUrl.fromLocalFile(tp.sourcePath)
            imageUrls.append(sourceUrl)

        # Configure mime data
        mimeData = QtCore.QMimeData()
        mimeData.setUrls(imageUrls)
        drag.setMimeData(mimeData)

        pixmap = QtGui.QPixmap(
            utils.getCustomIconPath(cfg.resourcePath, 'dragImage.png'))
        drag.setPixmap(pixmap)
        drag.exec_(supportedActions, QtCore.Qt.CopyAction)
Beispiel #5
0
def batchConvert(tpList, delay=0.1):
    '''Convert thumbnails, using tiered convert method.
    '''
    # Primary
    convert_primary = MIB_CONVERTERMAP[cfg.convert_primary]

    # Secondary
    convert_secondary = None
    if cfg.convert_secondary and cfg.convert_secondary != 'None':
        convert_secondary = MIB_CONVERTERMAP[cfg.convert_secondary]

    if utils.makeCachePath(cfg.cache):
        for tp in tpList:
            useError = False
            result = convert_primary.run(tp, cfg.max_size)
            if not result and convert_secondary:
                result = convert_secondary.run(tp, cfg.max_size)
                if not result:
                    useError = True
            elif not result and not convert_secondary:
                useError = True

            # Render placeholder error thumbnail, SVG for max size flexibility
            if useError:
                utils.warn('Could not build thumbnail for: %s' % tp.sourcePath)

                svgRenderer = QtSvg.QSvgRenderer(
                    utils.getCustomIconPath(cfg.resourcePath, 'error.svg'))
                svgImage = QtGui.QImage(cfg.max_size, cfg.max_size,
                                        QtGui.QImage.Format_ARGB32)
                painter = QtGui.QPainter(svgImage)
                svgRenderer.render(painter)
                svgImage.save(tp.thumbnailPath)
                painter.end()

            # delay to for responsiveness
            time.sleep(delay)
Beispiel #6
0
    def __init__(self, parent=None):
        super(MIBView, self).__init__(parent)

        mainLayout = QtWidgets.QVBoxLayout()
        self.setLayout(mainLayout)

        self.activeCollectionItem = None

        # Viewers
        self.bookmarkView = MIBBookmarkList()
        self.browserView = MIBFileBrowser()
        self.imageView = MIBImageList()

        # Toolbar
        self.toolbar = QtWidgets.QToolBar()

        # Toolbar Actions
        spacerWidget = QtWidgets.QWidget()
        spacerWidget.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                   QtWidgets.QSizePolicy.Preferred)
        addBookmarkIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'addBookmark.png'))
        addCollectionIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'addCollection.png'))
        refreshCurrentIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'refresh.png'))
        smallIconSizeIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'small.png'))
        mediumIconSizeIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'medium.png'))
        largeIconSizeIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'large.png'))
        configIcon = QtGui.QIcon(
            utils.getCustomIconPath(cfg.resourcePath, 'config.png'))
        self.toolbar.addAction(addBookmarkIcon, "Bookmark Current",
                               self.addBookmark)
        self.toolbar.addAction(addCollectionIcon, "New Collection",
                               self.addCollection)
        self.toolbar.addWidget(spacerWidget)
        self.smallIconSizeAction = self.toolbar.addAction(
            smallIconSizeIcon, "Small Icons", self.imageView.setIconSmall)
        self.mediumIconSizeAction = self.toolbar.addAction(
            mediumIconSizeIcon, "Medium Icons", self.imageView.setIconMedium)
        self.largeIconSizeAction = self.toolbar.addAction(
            largeIconSizeIcon, "Large Icons", self.imageView.setIconLarge)
        self.smallIconSizeAction.setCheckable(True)
        self.mediumIconSizeAction.setCheckable(True)
        self.largeIconSizeAction.setCheckable(True)
        iconSizeActionGroup = QtWidgets.QActionGroup(self.toolbar)
        iconSizeActionGroup.addAction(self.smallIconSizeAction)
        iconSizeActionGroup.addAction(self.mediumIconSizeAction)
        iconSizeActionGroup.addAction(self.largeIconSizeAction)
        self.toolbar.addSeparator()
        self.toolbar.addAction(refreshCurrentIcon, "Refresh Thumbnails",
                               lambda: self.refreshThumbnails(True))
        self.toolbar.addAction(configIcon, "Configure", self.showConfig)

        # File Path Edit
        completer = QtWidgets.QCompleter()
        completer.setModel(self.browserView.fileModel)
        self.pathEdit = QtWidgets.QLineEdit()
        self.pathEdit.setCompleter(completer)

        # Splitters
        browserSplitter = QtWidgets.QSplitter()
        browserSplitter.addWidget(self.bookmarkView)
        browserSplitter.addWidget(self.browserView)
        browserSplitter.setOrientation(QtCore.Qt.Vertical)
        browserSplitter.setSizes([300, 800])

        viewSplitter = QtWidgets.QSplitter()
        viewSplitter.addWidget(browserSplitter)
        viewSplitter.addWidget(self.imageView)
        viewSplitter.setSizes([220, 800])
        viewSplitter.setHandleWidth(6)

        # Layout
        mainLayout.addWidget(self.pathEdit)
        mainLayout.addWidget(self.toolbar)
        mainLayout.addWidget(viewSplitter)

        # Connections
        self.browserView.directoryChanged.connect(self.loadThumbnailsFromPath)
        self.browserView.directoryChanged.connect(self.setPathFromBrowser)
        self.pathEdit.returnPressed.connect(self.setPathFromEdit)
        self.bookmarkView.itemDoubleClicked.connect(self.setPreset)
        self.bookmarkView.collectionUpdated.connect(self.updateCollection)
        self.bookmarkView.presetRemoved.connect(self.cleanupCollectionView)

        # Init
        self.setSizeMode()
        self.browserView.setDirFromPath(utils.getHomePath())
        self.loadPresets()