dialog show only once (when more files are missing)

This commit is contained in:
Andreas Preikschat 2011-01-02 17:37:31 +01:00
commit 0d2e8ff12d
2 changed files with 32 additions and 21 deletions

View File

@ -41,7 +41,7 @@ class ImagePlugin(Plugin):
self.icon = build_icon(self.icon_path) self.icon = build_icon(self.icon_path)
def getMediaManagerItem(self): def getMediaManagerItem(self):
# Create the MediaManagerItem object # Create the MediaManagerItem object.
return ImageMediaItem(self, self, self.icon) return ImageMediaItem(self, self, self.icon)
def about(self): def about(self):

View File

@ -166,29 +166,39 @@ class ImageMediaItem(MediaManagerItem):
service_item.add_capability(ItemCapabilities.AllowsAdditions) service_item.add_capability(ItemCapabilities.AllowsAdditions)
# force a nonexistent theme # force a nonexistent theme
service_item.theme = -1 service_item.theme = -1
missing_items = []
missing_items_filenames = []
for item in items: for item in items:
bitem = self.listView.item(item.row()) bitem = self.listView.item(item.row())
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
if os.path.exists(filename): if not os.path.exists(filename):
(path, name) = os.path.split(filename) missing_items.append(item)
service_item.add_from_image(filename, name) missing_items_filenames.append(filename)
# We have only one image, which is no longer present. for item in missing_items:
elif len(items) == 1: items.remove(item)
QtGui.QMessageBox.critical( # We cannot continue, as all images do not exist.
self, translate('ImagePlugin.MediaItem', if not items:
'Missing Image'), QtGui.QMessageBox.critical(self,
unicode(translate('ImagePlugin.MediaItem', translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
'The image %s no longer exists.')) % filename) unicode(translate('ImagePlugin.MediaItem',
return False 'The following image(s) no longer exist: %s')) %
# We have more than one item, but a file is missing. u'\n'.join(missing_items_filenames))
elif QtGui.QMessageBox.question(self, return False
translate('ImagePlugin.MediaItem', 'Missing Image'), # We have missing as well as existing images. We ask what to do.
unicode(translate('ImagePlugin.MediaItem', 'The image %s ' elif missing_items and QtGui.QMessageBox.question(self,
'no longer exists. Do you want to add the other images ' translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
'anyway?')) % filename, unicode(translate('ImagePlugin.MediaItem', 'The following '
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | 'image(s) no longer exist: %s\nDo you want to add the other '
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No: 'images anyway?')) % u'\n'.join(missing_items_filenames),
return False QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
return False
# Continue with the existing images.
for item in items:
bitem = self.listView.item(item.row())
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
(path, name) = os.path.split(filename)
service_item.add_from_image(filename, name)
return True return True
else: else:
return False return False
@ -198,6 +208,7 @@ class ImageMediaItem(MediaManagerItem):
self.parent.liveController.display.resetImage() self.parent.liveController.display.resetImage()
def onReplaceClick(self): def onReplaceClick(self):
# TODO: Check if image exists.
if check_item_selected(self.listView, if check_item_selected(self.listView,
translate('ImagePlugin.MediaItem', translate('ImagePlugin.MediaItem',
'You must select an image to replace the background with.')): 'You must select an image to replace the background with.')):