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'))))
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
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
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)
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)
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()