Exemple #1
0
    def createMimeDataFromSelection(self):
        result = QMimeData()
        cursor = self.textCursor()
        selection = cursor.selectedText()
        selection = selection.replace('\u2029', '\n')
        selection = selection.replace('\u2028', '\n')
        result.setText(selection)

        # create an xml representation of the selected document structure
        traversal = TextDocumentSelectionTraversal()
        frame = traversal.traverse(self.textCursor(), self.document())

        print('\n-----------------------------------------------')
        printer = StructurePrinter(frame, self.outPut)
        printer.traverse()
        print('-----------------------------------------------')

        return

        sp = AppXmlPrinter(frame, None)
        sp.traverse()

        blafasel = '''<?xml version="1.0" encoding="utf-8"?>
<article version="5.0" xml:lang="en"
         xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink">
  <title></title></article>'''
        result.setData("application/xml", blafasel)
        return result
Exemple #2
0
 def copy_metadata(self):
     rows = self.gui.library_view.selectionModel().selectedRows()
     if not rows or len(rows) == 0:
         return error_dialog(self.gui,
                             _('Cannot copy metadata'),
                             _('No books selected'),
                             show=True)
     if len(rows) > 1:
         return error_dialog(
             self.gui,
             _('Cannot copy metadata'),
             _('Multiple books selected, can only copy from one book at a time.'
               ),
             show=True)
     db = self.gui.current_db
     book_id = db.id(rows[0].row())
     mi = db.new_api.get_metadata(book_id)
     md = QMimeData()
     md.setText(unicode_type(mi))
     md.setData('application/calibre-book-metadata',
                bytearray(metadata_to_opf(mi, default_lang='und')))
     img = db.new_api.cover(book_id, as_image=True)
     if img:
         md.setImageData(img)
     c = QApplication.clipboard()
     c.setMimeData(md)
Exemple #3
0
    def mouseMoveEvent(self, event):
        '''
        @param: event QMouseEvent
        '''
        if not self._locationBar or event.buttons() != Qt.LeftButton:
            super().mouseMoveEvent(event)
            return

        manhattanLength = (event.pos() -
                           self._drawStartPosition).manhattanLength()
        if manhattanLength <= QApplication.startDragDistance():
            super().mouseMoveEvent(event)
            return

        url = self._locationBar.webView().url()
        title = self._locationBar.webView().title()

        if url.isEmpty() or not title:
            super().mouseMoveEvent(event)
            return

        drag = QDrag(self)
        mime = QMimeData()
        mime.setUrls([url])
        mime.setText(title)
        mime.setImageData(self.icon.pixmap(16).toImage())

        drag.setMimeData(mime)
        drag.setPixmap(
            gVar.appTools.createPixmapForSite(self.icon, title,
                                              url.toString()))
        drag.exec_()

        # Restore Down State
        self.setDown(False)
Exemple #4
0
 def trigger_copy(self, text, html):
     if text:
         md = QMimeData()
         md.setText(text)
         if html:
             md.setHtml(html)
         QApplication.instance().clipboard().setMimeData(md)
Exemple #5
0
	def mousePressEvent(self, event):
		self.parentWidget().mousePressEvent(event)
		if not self.parentWidget().isDraging():
			super(WebView, self).mousePressEvent(event)
			if event.buttons() == Qt.LeftButton:
				mimeData = QMimeData()
				hitTestResult = self.mainFrame.hitTestContent(event.pos())
				# print(hitTestResult.linkUrl())
				# dragging the scrollbar
				if hitTestResult.isNull():
					self.draging = True
				if hitTestResult.isContentSelected():
					mimeData.setText(self.selectedText())
					mimeData.setHtml(self.selectedHtml())
				elif not hitTestResult.linkUrl().isEmpty():
					mimeData.setUrls([hitTestResult.linkUrl()])
					mimeData.setHtml(hitTestResult.element().toOuterXml())
				elif not hitTestResult.pixmap().isNull():
					mimeData.setImageData(hitTestResult.pixmap())
					mimeData.setUrls([hitTestResult.imageUrl()])
					mimeData.setHtml(hitTestResult.element().toOuterXml())
					# mimeData.setData('application/x-qt-windows-mime;value="FileContents"', QVariant(hitTestResult.pixmap()).toByteArray())
				# elif not hitTestResult.mediaUrl().isEmpty():
				# 	mimeData.setUrls([hitTestResult.mediaUrl()])
				# 	mimeData.setHtml(hitTestResult.element().toOuterXml())
				else:
					return
				# pixmap = hitTestResult.pixmap()
				# pixmap.setMask(QBitmap.fromImage(pixmap.toImage()))
				self.drag.setMimeData(mimeData)
Exemple #6
0
 def _copy_links(self, lines):
     urls = QUrl.fromStringList(lines)
     cb = QApplication.instance().clipboard()
     md = QMimeData()
     md.setText('\n'.join(lines))
     md.setUrls(urls)
     cb.setMimeData(md)
Exemple #7
0
def copy_all(text_browser):
    mf = getattr(text_browser, 'details', text_browser)
    c = QApplication.clipboard()
    md = QMimeData()
    md.setText(mf.toPlainText())
    md.setHtml(mf.toHtml())
    c.setMimeData(md)
Exemple #8
0
 def mousePressEvent(self, event):
     self.parentWidget().mousePressEvent(event)
     if not self.parentWidget().isDraging():
         super(WebView, self).mousePressEvent(event)
         if event.buttons() == Qt.LeftButton:
             mimeData = QMimeData()
             hitTestResult = self.mainFrame.hitTestContent(event.pos())
             # print(hitTestResult.linkUrl())
             # dragging the scrollbar
             if hitTestResult.isNull():
                 self.draging = True
             if hitTestResult.isContentSelected():
                 mimeData.setText(self.selectedText())
                 mimeData.setHtml(self.selectedHtml())
             elif not hitTestResult.linkUrl().isEmpty():
                 mimeData.setUrls([hitTestResult.linkUrl()])
                 mimeData.setHtml(hitTestResult.element().toOuterXml())
             elif not hitTestResult.pixmap().isNull():
                 mimeData.setImageData(hitTestResult.pixmap())
                 mimeData.setUrls([hitTestResult.imageUrl()])
                 mimeData.setHtml(hitTestResult.element().toOuterXml())
                 # mimeData.setData('application/x-qt-windows-mime;value="FileContents"', QVariant(hitTestResult.pixmap()).toByteArray())
             # elif not hitTestResult.mediaUrl().isEmpty():
             # 	mimeData.setUrls([hitTestResult.mediaUrl()])
             # 	mimeData.setHtml(hitTestResult.element().toOuterXml())
             else:
                 return
             # pixmap = hitTestResult.pixmap()
             # pixmap.setMask(QBitmap.fromImage(pixmap.toImage()))
             self.drag.setMimeData(mimeData)
             self.dragStartPos = event.pos()
    def createMimeDataFromSelection(self):
        result = QMimeData()
        cursor = self.textCursor()
        selection = cursor.selectedText()
        selection = selection.replace('\u2029', '\n')
        selection = selection.replace('\u2028', '\n')
        result.setText(selection)

        # create an xml representation of the selected document structure 
        traversal = TextDocumentSelectionTraversal()
        frame = traversal.traverse(self.textCursor(), self.document())

        print('\n-----------------------------------------------')
        printer = StructurePrinter(frame, self.outPut)
        printer.traverse()
        print('-----------------------------------------------')

        return

        sp = AppXmlPrinter(frame, None)
        sp.traverse()

        blafasel = '''<?xml version="1.0" encoding="utf-8"?>
<article version="5.0" xml:lang="en"
         xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink">
  <title></title></article>'''
        result.setData("application/xml", blafasel)
        return result
Exemple #10
0
 def selection_changed(self):
     # Workaround Qt replacing nbsp with normal spaces on copy
     clipboard = QApplication.clipboard()
     if clipboard.supportsSelection() and self.textCursor().hasSelection():
         md = QMimeData()
         md.setText(self.selected_text)
         clipboard.setMimeData(md, clipboard.Selection)
Exemple #11
0
 def selection_changed(self):
     # Workaround Qt replacing nbsp with normal spaces on copy
     clipboard = QApplication.clipboard()
     if clipboard.supportsSelection() and self.textCursor().hasSelection():
         md = QMimeData()
         md.setText(self.selected_text)
         clipboard.setMimeData(md, clipboard.Selection)
Exemple #12
0
def set_clipboard(**kwargs):
	text = kwargs.get('text', None)
	html = kwargs.get('html', None)
	internal = kwargs.get('internal', False)
	kwargs['internal'] = True # set internal for nested invocations
	if text is not None and html is not None:
		raise ValueError()
	if internal:
		if not os.fork():
			os.close(sys.stdin.fileno())
			os.close(sys.stdout.fileno())
			os.close(sys.stderr.fileno())
			mime = QMimeData()
			mime.setData('text/application', b'queso')
			if text is not None:
				mime.setText(text)
			if html is not None:
				mime.setHtml(html)
			clip = get_application().clipboard()
			clip.setMimeData(mime)
			clip.dataChanged.connect(get_application().exit)
			sys.exit(get_application().exec_())
	else:
		p = multiprocessing.get_context('spawn').Process(target=set_clipboard, kwargs=kwargs, daemon=True)
		p.start()
Exemple #13
0
 def copy(self):
     # Workaround Qt replacing nbsp with normal spaces on copy
     c = self.textCursor()
     if not c.hasSelection():
         return
     md = QMimeData()
     md.setText(self.selected_text)
     QApplication.clipboard().setMimeData(md)
Exemple #14
0
 def mime_data_for_copy(self):
     md = QMimeData()
     text = self.lineEdit().selectedText()
     md.setText(text or self.dateTime().toString())
     md.setData(
         self.MIME_TYPE,
         self.dateTime().toString(Qt.DateFormat.ISODate).encode('ascii'))
     return md
Exemple #15
0
 def mousePressEvent(self, ev):
     if ev.button() == QtCore.Qt.LeftButton:
         drag = QDrag(self)
         mimeData = QMimeData()
         mimeData.setText(self.content)
         drag.setMimeData(mimeData)
         drag.setPixmap(iconPixmap)
         dropAction = drag.exec()
Exemple #16
0
def copy_all(web_view):
    web_view = getattr(web_view, 'details', web_view)
    mf = web_view.page().mainFrame()
    c = QApplication.clipboard()
    md = QMimeData()
    md.setText(mf.toPlainText())
    md.setHtml(mf.toHtml())
    c.setMimeData(md)
Exemple #17
0
 def copy(self):
     # Workaround Qt replacing nbsp with normal spaces on copy
     c = self.textCursor()
     if not c.hasSelection():
         return
     md = QMimeData()
     md.setText(self.selected_text)
     QApplication.clipboard().setMimeData(md)
Exemple #18
0
 def mouseMoveEvent(self, event):
     if not (event.buttons() & Qt.LeftButton):
         return
     if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance():
         return
     drag = QDrag(self)
     
     mimedata = QMimeData()
     mimedata.setParent(self)
     mimedata.setText(self.text())
     drag.setMimeData(mimedata)
     pixmap = QPixmap(self.size())
     painter = QPainter(pixmap)
     painter.drawPixmap(self.rect(), self.grab())
     painter.end()
     drag.setPixmap(pixmap)
     drag.setHotSpot(event.pos())
     drag.exec_(Qt.CopyAction | Qt.MoveAction)
Exemple #19
0
 def copy_metadata(self):
     rows = self.gui.library_view.selectionModel().selectedRows()
     if not rows or len(rows) == 0:
         return error_dialog(self.gui, _('Cannot copy metadata'),
                             _('No books selected'), show=True)
     if len(rows) > 1:
         return error_dialog(self.gui, _('Cannot copy metadata'),
                             _('Multiple books selected, can only copy from one book at a time.'), show=True)
     db = self.gui.current_db
     book_id = db.id(rows[0].row())
     mi = db.new_api.get_metadata(book_id)
     md = QMimeData()
     md.setText(unicode(mi))
     md.setData('application/calibre-book-metadata', bytearray(metadata_to_opf(mi, default_lang='und')))
     img = db.new_api.cover(book_id, as_image=True)
     if img:
         md.setImageData(img)
     c = QApplication.clipboard()
     c.setMimeData(md)
    def mouseMoveEvent(self, event):
        '''
        @param: event QMouseEvent
        '''
        if not (event.buttons() & Qt.LeftButton) or len(
                self.selectedText()) != len(self.text()):
            super().mouseMoveEvent(event)
            return

        manhattanLength = (event.pos() - self._dragStart).manhattanLength()
        if manhattanLength <= QApplication.startDragDistance():
            return

        drag = QDrag(self)
        mime = QMimeData()
        mime.setText(self._originalText)

        drag.setMimeData(mime)
        drag.exec_()
Exemple #21
0
 def createMimeDataFromSelection(self):
     ans = QMimeData()
     ans.setText(self.selected_text)
     return ans
Exemple #22
0
 def date_time_copied(self, text):
     md = QMimeData()
     md.setText(text or self.dateTime().toString())
     md.setData(LineEditForDateTimeEdit.MIME_TYPE,
                self.dateTime().toString(Qt.ISODate).encode('ascii'))
     QApplication.instance().clipboard().setMimeData(md)