def __init__(self, parent=None, images=[]): QtGui.QWidget.__init__(self, parent) self.parent = parent self.title = _("images") ### model to store images ### self.modImgList = QtGui.QStandardItemModel(0, 1) self.add_images(images) ### listview to display images ### self.imgList = DragDropListWidget() self.imgList.setModel(self.modImgList) self.imgList.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.imgList.selectionModel().selectionChanged.connect(self.insert_thumbnail) self.imgList.dropped.connect(self.add_images) ### preview thumbnail are stored in a dic ### self.thumbnailDic = {} self.previewW = QtGui.QLabel() self.checkPreviewW = QtGui.QCheckBox(_("preview")) self.checkPreviewW.clicked.connect(self.check_preview) self.insert_thumbnail() ### adding and deleting images ### self.imgAdd = QtGui.QPushButton(_("add")) self.imgAdd.clicked.connect(self.add_images_clicked) self.imgRemove = QtGui.QPushButton(_("remove")) self.imgRemove.clicked.connect(self.remove_images_clicked) ### layout ### imgBox = QtGui.QHBoxLayout() imgBox.addWidget(self.imgList) imgBox.addWidget(self.previewW) toolBox = QtGui.QHBoxLayout() toolBox.addWidget(self.imgAdd) toolBox.addWidget(self.imgRemove) toolBox.addWidget(self.checkPreviewW) toolBox.addStretch(0) layout = QtGui.QVBoxLayout(self) layout.addLayout(imgBox) layout.addLayout(toolBox)
class ImgTab(QtGui.QWidget): """ manages the images to be processed can take a list of url as argument """ def __init__(self, parent=None, images=[]): QtGui.QWidget.__init__(self, parent) self.parent = parent self.title = _("images") ### model to store images ### self.modImgList = QtGui.QStandardItemModel(0, 1) self.add_images(images) ### listview to display images ### self.imgList = DragDropListWidget() self.imgList.setModel(self.modImgList) self.imgList.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.imgList.selectionModel().selectionChanged.connect(self.insert_thumbnail) self.imgList.dropped.connect(self.add_images) ### preview thumbnail are stored in a dic ### self.thumbnailDic = {} self.previewW = QtGui.QLabel() self.checkPreviewW = QtGui.QCheckBox(_("preview")) self.checkPreviewW.clicked.connect(self.check_preview) self.insert_thumbnail() ### adding and deleting images ### self.imgAdd = QtGui.QPushButton(_("add")) self.imgAdd.clicked.connect(self.add_images_clicked) self.imgRemove = QtGui.QPushButton(_("remove")) self.imgRemove.clicked.connect(self.remove_images_clicked) ### layout ### imgBox = QtGui.QHBoxLayout() imgBox.addWidget(self.imgList) imgBox.addWidget(self.previewW) toolBox = QtGui.QHBoxLayout() toolBox.addWidget(self.imgAdd) toolBox.addWidget(self.imgRemove) toolBox.addWidget(self.checkPreviewW) toolBox.addStretch(0) layout = QtGui.QVBoxLayout(self) layout.addLayout(imgBox) layout.addLayout(toolBox) def add_images_clicked(self): """ dialog for adding images """ url = QtGui.QFileDialog.getOpenFileNames( self, _("add images"), "", _( """Images (*.png *.jpeg *.jpg *.gif *.tiff *.tif *.PNG *.JPEG *.JPG *.GIF *.TIFF *.TIF) ;;All files (*)""" ), ) self.add_images(url) def remove_images_clicked(self): """ delete selected images from the model and the thumbnail from dic """ sel = self.imgList.selectionModel().selectedIndexes() for i in sel: self.delete_thumbnail(i.data()) self.modImgList.removeRow(i.row()) def add_images(self, url=[]): """ add an image in the model """ li = [] for i in url: li.append(str(i)) img = verif_images(li) for i in img: self.modImgList.appendRow(Item(i)) def return_imgs(self): """ return a list containning all images's url """ nb = self.modImgList.rowCount() images = [] for i in range(nb): images.append(str(self.modImgList.item(i).text())) return images def check_preview(self): """ show or hide thumdnail """ if self.checkPreviewW.isChecked(): self.insert_thumbnail() else: self.previewW.clear() def insert_thumbnail(self): """ insert the first selected image thumbnail """ if self.checkPreviewW.isChecked(): sel = self.imgList.selectionModel().selectedIndexes() if sel: img = sel[0].data() self.previewW.setPixmap(self.create_thumbnail(img)) else: self.previewW.setPixmap(self.create_thumbnail("alpha")) def create_thumbnail(self, url="alpha"): """ return or create thumbnail from url thumbnail are stored in self.thumbnailDic """ if url in self.thumbnailDic: return self.thumbnailDic[url] else: if url == "alpha": img = QtGui.QPixmap(200, 200) img.fill(QtGui.QColor(0, 0, 0, 0)) else: img = QtGui.QPixmap(url).scaledToWidth(200) self.thumbnailDic[url] = img return img def delete_thumbnail(self, image): """ delete thumbnail from self.thumbnailDic """ if image in self.thumbnailDic: del self.thumbnailDic[image]