예제 #1
0
 def __init__(self, chunksize=512, rate=44100, channel=2, sample_size=8
             ,codec="audio/pcm", threshold=500, save_dir=None):
     self.chunksize = chunksize
     self.rate = rate
     self.sample_size = sample_size
     self.channel = channel
     self.sampleWidth = 2
     #
     self.format = QAudioFormat()
     self.format.setChannelCount(self.channel)
     self.format.setSampleRate(self.rate)
     self.format.setSampleSize(self.sample_size)
     self.format.setCodec(codec)
     self.format.setByteOrder(QAudioFormat.LittleEndian) # 1
     self.format.setSampleType(QAudioFormat.UnSignedInt) # 2 这个应该就决定了录音的质量,不然会有很强的滋滋声音
     #
     self.block = b"" # bytes 类型
     self.record_buffer = QBuffer()
     self.play_buffer = QBuffer()  
     # 不能用QIODevice(),因为这是个c++的虚类(还没有python实体化?), 
     # 顺便也就不用所谓的QAudioBuffer类了
     self.pos = 0
     self.duration = 0
     # self.threshold = threshold
     self.save_dir = save_dir
     self.save_path = "./sound/test.wav"
예제 #2
0
    def handlePrint(self, data):
        with renderLock:
            self.document, copies = data
            self.update()

            if platform == "linux":
                bmp = QImage(self.size[0], self.size[1], QImage.Format_Mono)
                self.paintEvent(None, bmp)
                buffer = QBuffer()
                buffer.open(QBuffer.ReadWrite)
                bmp.save(buffer, "BMP")
                img = Image.open(io.BytesIO(buffer.data()))
                img.save("/tmp/image.png")
                for i in range(copies):
                    os.system("lpr /tmp/image.png")
            elif platform == "win32":
                pix = self.grab()
                bmp = QImage(pix)
                buffer = QBuffer()
                buffer.open(QBuffer.ReadWrite)
                bmp.save(buffer, "BMP")
                img = Image.open(io.BytesIO(buffer.data()))
                printerName = win32print.GetDefaultPrinter()
                deviceContext = win32ui.CreateDC()
                deviceContext.CreatePrinterDC(printerName)
                deviceContext.StartDoc("Inventory Label")
                for i in range(copies):
                    deviceContext.StartPage()
                    dib = ImageWin.Dib(img)
                    dib.draw(deviceContext.GetHandleOutput(),
                             (0, 0, self.size[0], self.size[1]))
                    deviceContext.EndPage()
                deviceContext.EndDoc()
                deviceContext.DeleteDC()
예제 #3
0
    def perform_request(self,
                        endpoint,
                        read_callback,
                        data="",
                        method='GET',
                        capture_errors=True):
        """
        Perform a HTTP request.
        :param endpoint: the endpoint to call (i.e. "statistics")
        :param read_callback: the callback to be called with result info when we have the data
        :param data: optional POST data to be sent with the request
        :param method: the HTTP verb (GET/POST/PUT/PATCH)
        :param capture_errors: whether errors should be handled by this class (defaults to True)
        """
        performed_requests[self.request_id] = [
            endpoint, method, data, time(), -1
        ]
        performed_requests_ids.append(self.request_id)
        if len(performed_requests_ids) > 200:
            del performed_requests[performed_requests_ids.pop(0)]
        url = self.base_url + endpoint

        if method == 'GET':
            buf = QBuffer()
            buf.setData(data)
            buf.open(QIODevice.ReadOnly)
            get_request = QNetworkRequest(QUrl(url))
            self.reply = self.sendCustomRequest(get_request, "GET", buf)
            buf.setParent(self.reply)
        elif method == 'PATCH':
            buf = QBuffer()
            buf.setData(data)
            buf.open(QIODevice.ReadOnly)
            patch_request = QNetworkRequest(QUrl(url))
            self.reply = self.sendCustomRequest(patch_request, "PATCH", buf)
            buf.setParent(self.reply)
        elif method == 'PUT':
            request = QNetworkRequest(QUrl(url))
            request.setHeader(QNetworkRequest.ContentTypeHeader,
                              "application/x-www-form-urlencoded")
            self.reply = self.put(request, data)
        elif method == 'DELETE':
            buf = QBuffer()
            buf.setData(data)
            buf.open(QIODevice.ReadOnly)
            delete_request = QNetworkRequest(QUrl(url))
            self.reply = self.sendCustomRequest(delete_request, "DELETE", buf)
            buf.setParent(self.reply)
        elif method == 'POST':
            request = QNetworkRequest(QUrl(url))
            request.setHeader(QNetworkRequest.ContentTypeHeader,
                              "application/x-www-form-urlencoded")
            self.reply = self.post(request, data)

        if read_callback:
            self.received_json.connect(read_callback)

        self.finished.connect(
            lambda reply: self.on_finished(reply, capture_errors))
예제 #4
0
    def loadFromMemory(self):
        """ This slot function is called in the second Dialog process, when the
        user presses the "Load Image from Shared Memory" button.  First, it
        attaches the process to the shared memory segment created by the first
        Dialog process.  Then it locks the segment for exclusive access, copies
        the image data from the segment into a QBuffer, and streams the QBuffer
        into a QImage.  Then it unlocks the shared memory segment, detaches
        from it, and finally displays the QImage in the Dialog.
        """

        if not self.sharedMemory.attach():
            self.ui.label.setText(
                "Unable to attach to shared memory segment.\nLoad an "
                "image first.")
            return

        buf = QBuffer()
        ins = QDataStream(buf)
        image = QImage()

        self.sharedMemory.lock()
        buf.setData(self.sharedMemory.constData())
        buf.open(QBuffer.ReadOnly)
        ins >> image
        self.sharedMemory.unlock()
        self.sharedMemory.detach()

        self.ui.label.setPixmap(QPixmap.fromImage(image))
예제 #5
0
    def copy_image(self, image, path):
        # TODO : fails if the directory does not exist
        # (which  indicates the transcode failed)

        src = self.parent.target_source

        if src.isGetPutSupported():

            ba = QByteArray()
            buf = QBuffer(ba)
            image.save(buf, "JPG")
            #buf.seek(0)
            fo = io.BytesIO(ba.data())
            print(path)

            try:
                src.putfo(path, fo)
            except Exception as e:
                print("Exception copying art:")
                print("from: %s" % path)
                print("to  : %s" % fo)
                print("%s" % e)

        else:
            print("copy not supported for album art")
예제 #6
0
  def wn_init (self) :
    JC_LOG .info ( self.tm_wai ('Initializing ...') )
    self.wu_stage = JC_FX_STAGE
    self.wu_root = CjFxVBox ()
    self.wu_scene = CjFxScene ( self.wu_root, 650, 650 )
    self.wu_stage .setTitle (GC_APP_NM)
    self.wu_stage .setScene (self.wu_scene)
    nu_svg_fn = gf_pj ( GC_MILO_PN, 'as', 'fx-180611-1413.svg' )
    JC_LOG .info ( f'SVG file => { gf_to_mps (nu_svg_fn) }' )

    nu_ba = QByteArray ()
    nu_bf = QBuffer (nu_ba)
    nu_bf .open (QIODevice.WriteOnly)
    QPixmap (nu_svg_fn) .save ( nu_bf, 'PNG' )

    self.wu_iv_svg = CjFxImageView ( CjFxImage ( jf_ba_2_jbais (nu_ba) ) )
    self.wu_wv_license = CjFxWebView ()
    self.wu_wv_license .getEngine () .loadContent ('''
      <center>
        <div>Icons made by <a href="https://www.flaticon.com/authors/pixel-perfect" title="Pixel perfect">Pixel perfect</a>
        from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> is licensed
        by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></div>
      </center>
    ''')
    self.wu_root .setAlignment (CjFxPos.CENTER)
    self.wu_root .setSpacing (10)
    self.wu_root .getChildren () .addAll ( [ self.wu_iv_svg, self.wu_wv_license ] )
    jy_gc ('''{ x_yi, x_stage ->
      x_stage .with {
        onShown = { gp_yn x_yi, 'wn_shown' }
        onCloseRequest = { gp_yn x_yi, 'wn_quit' }
      }
    }''', self.cu_yi, self.wu_stage )
    self.wu_stage .show ()
    self .wn_move_center ()
예제 #7
0
def pmap_to_pil_img(pmap):
    buffer = QBuffer()
    buffer.open(QBuffer.ReadWrite)

    img = QImage(pmap)
    img.save(buffer, "PNG")
    return Image.open(io.BytesIO(buffer.data()))
예제 #8
0
 def render_to_bytes(self, res):
     """Renders the image into an object of type 'str'"""
     qt_format = self.format  # this may not be constant due to processEvents()
     image = self.render(res)
     q_buffer = QBuffer()
     image.save(q_buffer, qt_format)
     return q_buffer.buffer().data()
예제 #9
0
    def set_region(self, region):
        """
        Put the playback start position to `position`.
        """
        # avoid segfault if changing region during playback
        self.stop()

        position, end = region
        position = max(0, min(position, end))  # don't start before 0
        end = min(self.params.nframes, end)  # don't set end after days!
        self.region = position, end
        print('set_region -> {:,}-{:,}'.format(*self.region))
        print('region times: {}-{} (duration={})'.format(*self.region_timedeltas()))
        frame_to_read = end - position

        wav = wave.open(self.wav_path)
        wav.setpos(position)
        # we need to reinit buffer since the region could be shorter than before
        self.buffer = QBuffer()
        self.buffer.writeData(wav.readframes(frame_to_read))
        wav.close()

        start_time = position / self.params.framerate
        self.progressBar.setValue(start_time * 100 / self.duration)
        self.status_bar.showMessage(str(timedelta(seconds=start_time))[:-3])
예제 #10
0
    def _encodeSnapshot(self, snapshot):

        Major = 0
        Minor = 0
        try:
            Major = int(CuraVersion.split(".")[0])
            Minor = int(CuraVersion.split(".")[1])
        except:
            pass

        if Major < 5:
            from PyQt5.QtCore import QByteArray, QIODevice, QBuffer
        else:
            from PyQt6.QtCore import QByteArray, QIODevice, QBuffer

        Logger.log("d", "Encoding thumbnail image...")
        try:
            thumbnail_buffer = QBuffer()
            if Major < 5:
                thumbnail_buffer.open(QBuffer.ReadWrite)
            else:
                thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite)
            thumbnail_image = snapshot
            thumbnail_image.save(thumbnail_buffer, "JPG")
            base64_bytes = base64.b64encode(thumbnail_buffer.data())
            base64_message = base64_bytes.decode('ascii')
            thumbnail_buffer.close()
            return base64_message
        except Exception:
            Logger.logException("w", "Failed to encode snapshot image")
예제 #11
0
파일: image.py 프로젝트: plomgrading/plom
    def pickle(self):
        """
        Pickle the image into a list containing important information.

        Returns:
            (list): containing
                (str): "Image"
                (float): X position of image.
                (float): Y position of image.
                (str): a string containing image data in base64 encoding.
                (float): scale of the image.
                (bool): true if the image contains a red border,
                    false otherwise.
        """
        if self.data is None:
            ba = QByteArray()
            buffer = QBuffer(ba)
            buffer.open(QIODevice.WriteOnly)
            self.qImage.save(buffer, "PNG")
            pickle = [
                "Image",
                self.x(),
                self.y(),
                str(ba.toBase64().data()),
                self.scale(),
                self.border,
            ]
        else:
            pickle = [
                "Image",
                self.x(),
                self.y(), self.data,
                self.scale(), self.border
            ]
        return pickle
예제 #12
0
    def _addIcon(self):
        filter_ = self.tr("Images (*.jpg *.jpeg *.bmp *.png *.tiff *.gif);;"
                          "All files (*.*)")
        fileName, _selectedFilter = QFileDialog.getOpenFileName(self,
                self.tr("Open File"), self.latestDir,
                filter_)
        if fileName:
            file_info = QFileInfo(fileName)
            self.latestDir = file_info.absolutePath()

            image = QImage()
            if image.load(fileName):
                maxWidth = 22
                maxHeight = 15
                if image.width() > maxWidth or image.height() > maxHeight:
                    scaledImage = image.scaled(maxWidth, maxHeight,
                            Qt.KeepAspectRatio, Qt.SmoothTransformation)
                else:
                    scaledImage = image

                ba = QByteArray()
                buffer = QBuffer(ba)
                buffer.open(QIODevice.WriteOnly)
                scaledImage.save(buffer, 'png')

                model = self.model()
                index = model.index(self.selectedIndex().row(), model.fieldIndex('icon'))
                model.setData(index, ba)
예제 #13
0
 def ocrForImage(self, image):
     """
     为截取的图片进行ocr识别
     :param image: QImage
     :return: null
     """
     # Note:子线程里不能对ui界面做改动,ui界面修改只能在主线程中修改,下面注释的做法是错误的
     # self.ui.ocrInfo.setText('识别中......')
     byte = QByteArray()
     buffer = QBuffer(byte)
     buffer.open(QIODevice.WriteOnly)
     image.save(buffer, 'PNG')
     if self.ocrType == ocrType.ocr_general:
         self.result = self.OCR.client.general_detect(
             CIBuffers([byte.data()]))
     elif self.ocrType == ocrType.ocr_handwriting:
         self.result = self.OCR.client.handwriting_detect(
             CIBuffers([byte.data()]))
     elif self.ocrType == ocrType.ocr_idcard:
         self.result = self.OCR.client.idcard_detect(
             CIBuffers([byte.data()]), 0)
     elif self.ocrType == ocrType.ocr_namecard:
         self.result = self.OCR.client.namecard_detect(
             CIBuffers([byte.data()]), 0)
     elif self.ocrType == ocrType.ocr_bankcard:
         self.result = self.OCR.client.bankcard_detect(
             CIBuffers([byte.data()]))
     else:
         pass
     self.processFinished.emit(self.result)
예제 #14
0
    def eps(self, filename, rect=None, resolution=72.0, paperColor=None):
        """Create a EPS (Encapsulated Postscript) file for the selected rect or the whole page.

        This needs the popplerqt5 module.
        The filename may be a string or a QIODevice object. The rectangle is
        relative to our top-left position. Normally vector graphics are
        rendered, but in cases where that is not possible, the resolution will
        be used to determine the DPI for the generated rendering.

        """
        buf = QBuffer()
        buf.open(QBuffer.WriteOnly)
        success = self.pdf(buf, rect, resolution, paperColor)
        buf.close()
        if success:
            from . import poppler
            for pdf in poppler.PopplerPage.load(buf.data()):
                ps = pdf.document.psConverter()
                ps.setPageList([pdf.pageNumber + 1])
                if isinstance(filename, str):
                    ps.setOutputFileName(filename)
                else:
                    ps.setOutputDevice(filename)
                try:
                    ps.setPSOptions(ps.PSOption(ps.Printing
                                                | ps.StrictMargins))
                    ps.setPSOptions(
                        ps.PSOption(ps.Printing | ps.StrictMargins
                                    | ps.PrintToEPS))
                except AttributeError:
                    pass
                ps.setVDPI(resolution)
                ps.setHDPI(resolution)
                return ps.convert()
        return False
예제 #15
0
    def pydoc(self, job, url):
        from pygments.formatters import HtmlFormatter
        from pygments.lexers.python import Python3Lexer
        from pygments import highlight

        modname = url.path().lstrip("/")
        query = QUrlQuery(url)
        extras = {}
        if query.hasQueryItem("hl_lines"):
            start, end = query.queryItemValue("hl_lines").split("-")
            extras["hl_lines"] = list(range(int(start), int(end) + 1))

        mod = importlib.import_module(modname)
        filepath = inspect.getsourcefile(mod)

        formatter = HtmlFormatter(title="Module %s" % modname,
                                  full=True,
                                  lineanchors="line",
                                  **extras)

        with open(filepath) as f:
            code = highlight(f.read(), Python3Lexer(), formatter)

        buffer = QBuffer(self)
        buffer.setData(code.encode("utf-8"))
        job.reply(b"text/html", buffer)
예제 #16
0
    def saveBookInfo(self):
        selected_items = self.treeFileList.selectedItems()
        if len(selected_items) == 1:
            QApplication.setOverrideCursor(Qt.BusyCursor)

            item = selected_items[0]
            meta = EbookMeta(item.text(2))
            meta.get()

            if self.book_cover:
                data = QByteArray()
                buf = QBuffer(data)
                self.book_cover.save(buf, 'JPG')
                meta.coverdata = bytes(buf.buffer())
                if not meta.coverpage:
                    meta.coverpage = 'cover.jpg'
                    meta.coverpage_href = '{http://www.w3.org/1999/xlink}href'
            else:
                meta.coverpage = ''
                meta.coverdata = None

            meta.set_authors(self.editAuthor.text())
            meta.book_title = self.editTitle.text()
            meta.set_series(self.editSeries.text(), self.editSeriesNumber.text())
            meta.lang = self.editBookLanguage.text()
            meta.write()

            item.setText(0, meta.book_title)
            item.setText(1, meta.get_autors())

            QApplication.restoreOverrideCursor()
        elif len(selected_items) > 1:
            msg = QMessageBox(self)
            msg.setIcon(QMessageBox.Question)
            msg.setWindowTitle(_translate('fb2mobi', 'Save'))
            msg.setText(_translate('fb2mobi', 'Save changes in selected files?'))
            msg.setStandardButtons(QMessageBox.Save | QMessageBox.Cancel)
            if msg.exec_() == QMessageBox.Save:
                QApplication.setOverrideCursor(Qt.BusyCursor)
                
                for item in selected_items:
                    meta = EbookMeta(item.text(2))
                    meta.get()
                    (series, series_number) = meta.get_first_series()
                    authors = meta.get_autors()
                    if self.editAuthor.text():
                        authors = self.editAuthor.text()
                    if self.editSeries.text():
                        series = self.editSeries.text()

                    meta.set_authors(authors)
                    meta.set_series(series, series_number)
                    if self.editBookLanguage.text():
                        meta.lang = self.editBookLanguage.text()
                    meta.write()

                    item.setText(0, meta.book_title)
                    item.setText(1, meta.get_autors())

                QApplication.restoreOverrideCursor()
예제 #17
0
 def _image_to_byte_array(self, image) -> QByteArray:
     byte_array = QByteArray()
     buffer = QBuffer(byte_array)
     buffer.open(QIODevice.WriteOnly)
     image.save(buffer, 'png')
     buffer.close()
     return byte_array 
예제 #18
0
    def add_request(self, request):
        if len(self.requests_in_flight) > self.max_in_flight:
            self.evict_timed_out_requests()

        self.requests_in_flight[id(request)] = request
        log = [request, 0]
        performed_requests.append(log)

        # qt_request is managed by QNetworkAccessManager, so we don't have to
        qt_request = QNetworkRequest(QUrl(request.url))
        qt_request.setPriority(request.priority)
        qt_request.setHeader(QNetworkRequest.ContentTypeHeader,
                             "application/x-www-form-urlencoded")
        qt_request.setRawHeader(b'X-Api-Key', self.key)

        buf = QBuffer()
        if request.raw_data:
            buf.setData(request.raw_data)
        buf.open(QIODevice.ReadOnly)

        request.reply = self.sendCustomRequest(qt_request,
                                               request.method.encode("utf8"),
                                               buf)
        buf.setParent(request.reply)

        connect(request.reply.finished, lambda: request.on_finished(request))
예제 #19
0
def get_frame_with_color_info(color: QColor, size=SIZE, rounded=True, as_bytes=False) -> Union[QImage, bytes]:
    image = QImage(size, size, QImage.Format_ARGB32)
    image.fill(Qt.transparent)

    painter = QPainter(image)
    painter.setRenderHint(QPainter.HighQualityAntialiasing)
    painter.setPen(Qt.NoPen)
    painter.setBrush(color)

    if rounded:
        painter.drawRoundedRect(0, 0, image.width(), image.height(), RADIUS, RADIUS, Qt.RelativeSize)
    else:
        painter.drawRect(0, 0, image.width(), image.height())

    draw_hex(painter, size, color)
    draw_rgb(painter, size, color)

    painter.end()

    if as_bytes:
        ba = QByteArray()
        buff = QBuffer(ba)
        buff.open(QIODevice.WriteOnly)
        image.save(buff, "PNG")
        return ba.data()

    return image
예제 #20
0
    def cadProduto(self):
        INSERI = CrudProduto()
        INSERI.id = self.tx_idProduto.text()
        INSERI.produto = self.tx_DescricaoProduto.text().upper()
        if self.lb_FotoProduto.pixmap():
            imagem = QPixmap(self.lb_FotoProduto.pixmap())
            data = QByteArray()
            buf = QBuffer(data)
            imagem.save(buf, 'PNG')
            INSERI.imagem = str(data.toBase64()).encode('utf8')[2:-1]
        else:
            INSERI.imagem = False

        INSERI.categoria = self.cb_CategoriaProduto.currentData()
        INSERI.marca = self.cb_MarcaProduto.currentData()
        INSERI.estoqueMinimo = self.tx_EstoqueMinimoProduto.text()
        INSERI.estoqueMaximo = self.tx_EstoqueMaximoProduto.text()
        INSERI.obsProduto = self.tx_ObsProduto.text()
        INSERI.valorCompra = self.tx_ValorCompraProduto.text().replace(",", ".")
        INSERI.valorUnitario = self.tx_ValorUnitarioProduto.text().replace(",", ".")
        INSERI.valorAtacado = self.tx_ValorAtacadoProduto.text().replace(",", ".")
        INSERI.qtdeAtacado = self.tx_MinimoAtacado.text()
        INSERI.inseriProduto()

        self.janelaProdutos()
예제 #21
0
 def __cssLinkClass(self, icon, size=32):
     """
     Private method to generate a link class with an icon.
     
     @param icon icon to be included (QIcon)
     @param size size of the icon to be generated (integer)
     @return CSS class string (string)
     """
     cssString = \
         """a.{{0}} {{{{\n"""\
         """  padding-left: {0}px;\n"""\
         """  background: transparent url(data:image/png;base64,{1})"""\
         """ no-repeat center left;\n"""\
         """  font-weight: bold;\n"""\
         """}}}}\n"""
     pixmap = icon.pixmap(size, size)
     imageBuffer = QBuffer()
     imageBuffer.open(QIODevice.ReadWrite)
     if not pixmap.save(imageBuffer, "PNG"):
         # write a blank pixmap on error
         pixmap = QPixmap(size, size)
         pixmap.fill(Qt.transparent)
         imageBuffer.buffer().clear()
         pixmap.save(imageBuffer, "PNG")
     return cssString.format(
         size + 4, str(imageBuffer.buffer().toBase64(), encoding="ascii"))
예제 #22
0
 def encode_image(self, size: QSize = None, *, fmt="PNG") -> bytes:
     """ Render to a bitmap image and convert it to a data stream. """
     im = self.draw_image(size)
     buf = QBuffer()
     buf.open(QIODevice.WriteOnly)
     im.save(buf, fmt)
     return buf.data()
예제 #23
0
 def pyqiodev(self):
     """Fixture providing a PyQIODevice with a QByteArray to test."""
     data = QByteArray()
     f = QBuffer(data)
     qiodev = qtutils.PyQIODevice(f)
     yield qiodev
     qiodev.close()
예제 #24
0
    def CadEmpresa(self):
        INSERI = CrudEmpresa()
        INSERI.id = self.tx_idEmpresa.text()
        INSERI.nomeFantasia = self.tx_NomeFantasia.text().upper()
        INSERI.razaoSocial = self.tx_RazaoSocial.text().upper()
        INSERI.cnpj = self.tx_Cnpj.text()
        INSERI.inscEstadual = self.tx_IE.text()
        INSERI.telefone = re.sub(
            '[^[0-9]', '', (self.tx_TelefoneEmpresa.text()))
        INSERI.email = self.tx_EmailEmpresa.text()
        INSERI.site = self.tx_SiteEmpresa.text()
        INSERI.obs = self.tx_ObsEmpresa.text().upper()
        INSERI.cep = re.sub('[^[0-9]', '', (self.tx_CepEmpresa.text()))
        INSERI.endereco = self.tx_Endereco.text().upper()
        INSERI.numero = self.tx_NumEmpresa.text()
        INSERI.bairro = self.tx_BairroEmpresa.text().upper()
        INSERI.cidade = self.tx_CidadeEmpresa.text().upper()
        INSERI.estado = self.tx_EstadoEmpresa.text().upper()
        INSERI.titulo = self.tx_Titulo.text()
        INSERI.subtitulo = self.tx_SubTitulo.text()

        if self.lb_LogoEmpresa.pixmap():
            image = QPixmap(self.lb_LogoEmpresa.pixmap())
            data = QByteArray()
            buf = QBuffer(data)
            image.save(buf, 'PNG')
            logo = str(data.toBase64()).encode('utf8')[2:-1]
            INSERI.logo = logo
        else:
            INSERI.logo = False

        INSERI.inseriEmpresa()
        self.lb_NomeFantasia.setText(self.tx_Titulo.text())
        self.lb_NomeFantasia2.setText(INSERI.subtitulo)
        self.setWindowTitle(INSERI.titulo + " " + INSERI.subtitulo)
예제 #25
0
    def mouseMoveEvent(self, event):
        """ If the mouse moves far enough when the left mouse button is held
            down, start a drag and drop operation.
        """
        if not event.buttons() & Qt.LeftButton:
            return

        if (event.pos() - self.dragStartPosition).manhattanLength() \
             < QApplication.startDragDistance():
            return

        if not self.hasImage:
            return

        drag = QDrag(self)
        mimeData = QMimeData()

        output = QByteArray()
        outputBuffer = QBuffer(output)
        outputBuffer.open(QIODevice.WriteOnly)
        self.imageLabel.pixmap().toImage().save(outputBuffer, 'PNG')
        outputBuffer.close()
        mimeData.setData('image/png', output)

        drag.setMimeData(mimeData)
        drag.setPixmap(self.imageLabel.pixmap().scaled(64, 64, Qt.KeepAspectRatio))
        drag.setHotSpot(QPoint(drag.pixmap().width() / 2,
                                      drag.pixmap().height()))
        drag.start()
예제 #26
0
def picklePixmap(pixmap):
    image = pixmap.toImage()
    byt_arr = QByteArray()
    buffer = QBuffer(byt_arr)
    buffer.open(QIODevice.WriteOnly);
    image.save(buffer, "PNG");
    return byt_arr
예제 #27
0
    def __init__(self, wav_path):
        QMainWindow.__init__(self)
        self.resize(350, 250)
        self.setWindowTitle('MainWindow')

        self._setLayout()
        self.status_bar = self.statusBar()

        self.wav_path = wav_path
        self.params = utils.read_wav_info(wav_path)
        self.duration = self.params.nframes / self.params.framerate

        self.output = utils.get_audio_output(self.params)
        self.output.stateChanged.connect(self.state_checkpoint)
        self.output.setNotifyInterval(20)

        self.output.notify.connect(self.notified)

        self.loop_button.clicked.connect(self.switch_loop)
        self.play_button.clicked.connect(self.play_pause)
        self.random_button.clicked.connect(self.set_random_region)
        self.export_button.clicked.connect(self.export_region)

        self.command_edit.returnPressed.connect(self.command_entered)

        self.loop_enabled = False

        self.buffer = QBuffer()

        self.region = None
        self.set_region((0, REG_SECONDS * self.params.framerate))
예제 #28
0
    def mimeData(self, indexes):
        """
        Public method to return the mime data.
        
        @param indexes list of indexes (QModelIndexList)
        @return mime data (QMimeData)
        """
        from .XbelWriter import XbelWriter

        data = QByteArray()
        stream = QDataStream(data, QIODevice.WriteOnly)
        urls = []

        for index in indexes:
            if index.column() != 0 or not index.isValid():
                continue

            encodedData = QByteArray()
            buffer = QBuffer(encodedData)
            buffer.open(QIODevice.ReadWrite)
            writer = XbelWriter()
            parentNode = self.node(index)
            writer.write(buffer, parentNode)
            stream << encodedData
            urls.append(index.data(self.UrlRole))

        mdata = QMimeData()
        mdata.setData(self.MIMETYPE, data)
        mdata.setUrls(urls)
        return mdata
예제 #29
0
    def save(self):
        """
        Public method to save the zoom values.
        """
        if not self.__loaded:
            return

        from WebBrowser.WebBrowserWindow import WebBrowserWindow
        if not WebBrowserWindow.isPrivate() and bool(self.__iconDatabasePath):
            db = {}
            for url, icon in self.__iconsDB.items():
                ba = QByteArray()
                buffer = QBuffer(ba)
                buffer.open(QIODevice.WriteOnly)
                icon.pixmap(32).toImage().save(buffer, "PNG")
                db[url] = bytes(buffer.data()).decode(self.__encoding)

            filename = os.path.join(self.__iconDatabasePath,
                                    self.__iconsFileName)
            try:
                f = open(filename, "w")
                json.dump(db, f)
                f.close()
            except (IOError, OSError):
                # ignore silentyl
                pass
예제 #30
0
    def dropMimeData(self, data, action, row, column, parent):
        """
        Public method to accept the mime data of a drop action.
        
        @param data reference to the mime data (QMimeData)
        @param action drop action requested (Qt.DropAction)
        @param row row number (integer)
        @param column column number (integer)
        @param parent index of the parent node (QModelIndex)
        @return flag indicating successful acceptance of the data (boolean)
        """
        if action == Qt.IgnoreAction:
            return True

        if column > 0:
            return False

        parentNode = self.node(parent)

        if not data.hasFormat(self.MIMETYPE):
            if not data.hasUrls():
                return False

            from .BookmarkNode import BookmarkNode
            node = BookmarkNode(BookmarkNode.Bookmark, parentNode)
            node.url = bytes(data.urls()[0].toEncoded()).decode()

            if data.hasText():
                node.title = data.text()
            else:
                node.title = node.url

            self.__bookmarksManager.addBookmark(parentNode, node, row)
            return True

        ba = data.data(self.MIMETYPE)
        stream = QDataStream(ba, QIODevice.ReadOnly)
        if stream.atEnd():
            return False

        undoStack = self.__bookmarksManager.undoRedoStack()
        undoStack.beginMacro("Move Bookmarks")

        from .XbelReader import XbelReader
        while not stream.atEnd():
            encodedData = QByteArray()
            stream >> encodedData
            buffer = QBuffer(encodedData)
            buffer.open(QIODevice.ReadOnly)

            reader = XbelReader()
            rootNode = reader.read(buffer)
            for bookmarkNode in rootNode.children():
                rootNode.remove(bookmarkNode)
                row = max(0, row)
                self.__bookmarksManager.addBookmark(parentNode, bookmarkNode,
                                                    row)
                self.__endMacro = True

        return True