예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
    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
예제 #5
0
 def setDataFromMime(self, mime: QMimeData) -> None:
     super().setDataFromMime(mime)
     self.setText(mime.text())
예제 #6
0
 def insertFromMimeData(self, source: QMimeData) -> None:
     print(source)
     self.insertPlainText(source.text())
     print(self.textCursor().blockNumber())
예제 #7
0
 def insertFromMimeData(self, source: QMimeData) -> None:
     if source.hasText():
         self.textCursor().insertText(source.text())
예제 #8
0
 def insertFromMimeData(self, source: QtCore.QMimeData) -> None:
     if source.hasText():
         self.insertPlainText(source.text())
     else:
         super().insertFromMimeData(source)
예제 #9
0
 def insertFromMimeData(self, source: QtCore.QMimeData) -> None:
     if source.hasText():
         text = source.text().replace(chr(0xa), chr(LINE_SEPARATOR))
         super().insertPlainText(text)
예제 #10
0
 def isAnimation(self, file: QMimeData):
     if file.hasText():
         return file.text()[-5:] == '.anim'
     return False