def dropEvent(self, event): url = getDragUrl(event) if url is None: event.ignore() return event.acceptProposedAction() for library in self.libraries: identifier = library.getUrlIdentifier(url) if identifier is None: continue object = library[identifier] if isinstance(object, Group) and not self.accept_groups: return break if object in self.objects: return self.objects.append(object) icon = object.getIcon() if icon: item = QListWidgetItem(QIcon(icon), identifier) else: item = QListWidgetItem(identifier) self.widget.addItem(item) self.widget.emit(SIGNAL('objectDrop()')) self._updateValidator()
def _getDragIdentifier(self, event): url = getDragUrl(event) if url is None: return None if not url.startswith(self.rule_type+':'): return None ignore = len(self.rule_type) + 1 return int(url[ignore:])
def filterDropEvent(self, event): url = getDragUrl(event) if url is None: event.ignore() return if self.filter.drop(url): event.accept() else: event.ignore()
def dragEnterEvent(self, event): url = getDragUrl(event) if url is None: event.ignore() return for library in self.libraries: identifier = library.getUrlIdentifier(url) if identifier is not None: event.accept() return event.ignore()
def getDragObject(self, event): url = getDragUrl(event) if url is None: event.ignore() return None event.acceptProposedAction() for library in self.libraries: identifier = library.getUrlIdentifier(url) if identifier is None: continue return library[identifier] return None