diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index dbb69c5b4..7fb4607f9 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -508,3 +508,20 @@ class ServiceItem(object): self._new_item() self.render() + def remove_invalid_frames(self, invalid_paths=None): + """ + Remove invalid frames, such as ones where the file no longer exists. + """ + if self.uses_file(): + for frame in self.get_frames(): + if self.get_frame_path(frame=frame) in invalid_paths: + self.remove_frame(frame) + + def validate(self): + """ + Validates this service item + """ + if not self._raw_frames: + self.is_valid = False + return self.is_valid + diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 0f51f1416..4f75ad3e5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -520,13 +520,8 @@ class ServiceManager(QtGui.QWidget): # Check if item contains a missing file. for item in list(self.serviceItems): self.mainwindow.incrementProgressBar() - if item[u'service_item'].uses_file(): - for frame in item[u'service_item'].get_frames(): - path_from = item[u'service_item'].get_frame_path( - frame=frame) - if path_from in missing_list: - item[u'service_item'].remove_frame(frame) - if not item[u'service_item'].get_frames(): + item[u'service_item'].remove_invalid_frames(missing_list) + if not item[u'service_item'].validate(): self.serviceItems.remove(item) else: service_item = item[u'service_item'].get_service_repr()