def insertFromMimeData(self, data: QMimeData) -> None: """ On a paste attempt, reset the cursor if necessary and paste only the plaintext content. """ if data.hasText(): self._set_cursor_valid() plaintext = QMimeData() plaintext.setText(data.text()) super().insertFromMimeData(plaintext)
def insertFromMimeData(self, source: QMimeData): lines = [] for line in source.text().splitlines(): line = line.strip() if line: lines.append(line) data = QMimeData() data.setText("\n".join(lines)) super().insertFromMimeData(data)
def insertFromMimeData(self, source: QMimeData, disable_richtext: bool = False): ''' ..todo: Add support for embedded content when inserting html mime from clipboard ''' if source.hasImage(): temporary_file = os.path.join( Environment.get_base_path(), Configuration().get_setting( 'oxnote', 'application.directories.temporary', default='.oxnote/tmp'), '{}.png'.format( (str(uuid.uuid4())))) source.imageData().save(temporary_file) with open(temporary_file, 'rb') as f: encoded = base64.b64encode(f.read()) self.textCursor().insertImage('data:image/png;base64,{}'.format( encoded.decode("utf-8"))) if os.path.isfile(temporary_file): os.remove(temporary_file) elif source.hasUrls(): for url in source.urls(): if pathlib.Path(url.fileName()).suffix.lower( )[1:] not in self.supported_image_formats: super().insertFromMimeData(source) continue file_extension = pathlib.Path( url.fileName()).suffix.lower()[1:] if url.isLocalFile(): if not os.path.isfile(url.toLocalFile()): continue with open(url.toLocalFile(), 'rb') as f: self.textCursor().insertImage( 'data:image/png;base64,{}'.format( base64.b64encode(f.read()).decode("utf-8"))) else: response = requests.get(url.toString(), stream=True) if response.status_code == 200: self.textCursor().insertImage( 'data:image/{};base64,{}'.format( file_extension, base64.b64encode( response.content).decode("utf-8"))) elif source.hasHtml() and disable_richtext: self.textCursor().insertText(source.text()) else: super().insertFromMimeData(source)
def dropMimeData(self, data: QMimeData, action: int, row: int, column: int, parent: QModelIndex) -> bool: if not self.canDropMimeData(data, action, row, column, parent): return False data = data.text().split('\n') for value in data: if row < 0: row = self.rowCount(QModelIndex()) self.insertRow(row, QModelIndex()) else: self.insertRow(row, QModelIndex()) index = self.index(row, 0, QModelIndex()) text = fromEditableExpr(value.lower()) self.setData(index, text, Qt.EditRole) row += 1 return True
def setDataFromMime(self, mime: QMimeData) -> None: super().setDataFromMime(mime) self.setText(mime.text())
def insertFromMimeData(self, source: QMimeData) -> None: print(source) self.insertPlainText(source.text()) print(self.textCursor().blockNumber())
def insertFromMimeData(self, source: QMimeData) -> None: if source.hasText(): self.textCursor().insertText(source.text())
def insertFromMimeData(self, source: QtCore.QMimeData) -> None: if source.hasText(): self.insertPlainText(source.text()) else: super().insertFromMimeData(source)
def insertFromMimeData(self, source: QtCore.QMimeData) -> None: if source.hasText(): text = source.text().replace(chr(0xa), chr(LINE_SEPARATOR)) super().insertPlainText(text)
def isAnimation(self, file: QMimeData): if file.hasText(): return file.text()[-5:] == '.anim' return False