def send_request_for_features(self): # prepare message in byte stream msg = QtCore.QByteArray() msg_stream = QtCore.QDataStream(msg, QtCore.QIODevice.WriteOnly) msg_stream.writeInt64(message_ids["MSG_ID_FEATURE_REQ"]) try: if self.verbose: print("Send request for features message") # send the message over the socket self.socket.send(msg) # get ACK before return rcv = QtCore.QByteArray(self.socket.recv()) except zmq.error.ZMQError: if self.verbose: print("ZMQ Error") return rcv_stream = QtCore.QDataStream(rcv, QtCore.QIODevice.ReadOnly) feats = [] for i in range(3): feats.append(rcv_stream.readQStringList()) r = rcv_stream.readInt64() if r == message_ids["MSG_ID_FEATURE_REQ_ACK"]: if self.verbose: print("Feature Request ACK") else: print("Feature Request failed!") if len([i for sublist in feats for i in sublist]) == 0: if self.verbose: print("Feature Request List Empty") feats = None return feats
def send_end_of_transmission(self): """Send end of transmission packet""" # prepare message in byte stream msg = QtCore.QByteArray() msg_stream = QtCore.QDataStream(msg, QtCore.QIODevice.WriteOnly) msg_stream.writeInt64(message_ids["MSG_ID_EOT"]) # reset state self.registered = False # print responses if self.verbose: print(self.response) try: if self.verbose: print("Sending EOT:", msg) # send the message over the socket self.socket.send(msg) # get ACK before return rcv_data = QtCore.QByteArray(self.socket.recv()) except zmq.error.ZMQError: print("ZMQ Error - No ACK for EOT") return rcv_stream = QtCore.QDataStream(rcv_data, QtCore.QIODevice.ReadOnly) r = rcv_stream.readInt64() if r != message_ids["MSG_ID_EOT_ACK"]: print("Did not receive ACK for EOT but: ", r) else: if self.verbose: print("EOT success")
def mouseMoveEvent(self, item): """Drag event""" shader = self.shader itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) dataStream << QtCore.QByteArray(str(shader)) mimeData = QtCore.QMimeData() icon = QtGui.QIcon() if cmds.nodeType(shader) == 'displacementShader': mimeData.setData("application/x-displacement", itemData) icon.addFile(os.path.join(d, "../../../icons/sgblue.xpm"), QtCore.QSize(25, 25)) else: mimeData.setData("application/x-shader", itemData) icon.addFile(os.path.join(d, "../../../icons/sg.xpm"), QtCore.QSize(25, 25)) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(icon.pixmap(50, 50)) drag.setHotSpot(QtCore.QPoint(0, 0)) drag.start(QtCore.Qt.MoveAction)
def _loadConfig(self): screenSize = QtGui.QGuiApplication.primaryScreen().size() windowSize = gg(screenSize) / 1.5 diffSize = (screenSize - windowSize) / 2 defaultGeometry = QtCore.QRect(QtCore.QPoint(diffSize.width(), diffSize.height()), windowSize) self.setGeometry(defaultGeometry) self._loadToolbars(self._config.toolbars) self.restoreGeometry(QtCore.QByteArray(gg(self._config.geometry))) self.restoreState(QtCore.QByteArray(gg(self._config.state)))
def handle_messages(self): """Handle messages from Shape-In Please don't override this function. Use :func:`ShapeLinkPlugin.handle_event` for your customized plugins. """ # read first byte if self._first_call: # needed for accurate line_profiler tests try: # get message from socket message = self.socket.recv() rcv = QtCore.QByteArray(message) except zmq.error.ZMQError: if self.verbose: print(" ZMQ Error - timed out") return self._first_call = False else: try: # get message from socket message = self.socket.recv() rcv = QtCore.QByteArray(message) except zmq.error.ZMQError: if self.verbose: print(" ZMQ Error - timed out") return rcv_stream = QtCore.QDataStream(rcv, QtCore.QIODevice.ReadOnly) r = rcv_stream.readInt64() send_data = QtCore.QByteArray() send_stream = QtCore.QDataStream(send_data, QtCore.QIODevice.WriteOnly) if r == message_ids["MSG_ID_FEATURE_REQ"]: # Allow plugin to request features self.run_features_request_message(send_stream) elif r == message_ids["MSG_ID_REGISTER"]: # register self.run_register_message(rcv_stream, send_stream) self.after_register() elif r == message_ids["MSG_ID_EOT"]: # End of Transmission (EOT) message self.run_EOT_message(send_stream) self.after_transmission() elif r >= 0: e = self.run_event_message(r, rcv_stream) # pass event object to user-defined method ret = self.handle_event(e) send_stream.writeBool(ret) else: # unknown message raise ValueError("Received unknown message header: {}".format(r)) self.socket.send(send_data)
def send_event( self, event_id: int, scalar_values: np.array, # vector of vector of short vector_values: List[np.array], image_values: List[np.array]) -> bool: """Send a single event to the other process""" # prepare message in byte stream msg = QtCore.QByteArray() msg_stream = QtCore.QDataStream(msg, QtCore.QIODevice.WriteOnly) msg_stream.writeInt64(event_id) assert len(scalar_values) == self.scalar_len assert len(vector_values) == self.vector_len assert len(image_values) == self.image_len assert np.issubdtype(scalar_values.dtype, np.floating) if self.scalar_len > 0: qstream_write_array(msg_stream, scalar_values) if self.vector_len > 0: msg_stream.writeUInt32(self.vector_len) for e in vector_values: assert e.dtype == np.int16, "fluorescence data is int16" qstream_write_array(msg_stream, e) if self.image_len > 0: msg_stream.writeUInt32(self.image_len) for (im_name, e) in zip(self.image_names, image_values): if im_name == "mask": assert e.dtype == np.bool_, "'mask' data is bool" else: assert e.dtype == np.uint8, "'image' data is uint8" qstream_write_array(msg_stream, e.flatten()) try: # send the message over the socket self.socket.send(msg) # get ACK before return rcv_data = QtCore.QByteArray(self.socket.recv()) except zmq.error.ZMQError: if self.verbose: print("ZMQ Error") return rcv_stream = QtCore.QDataStream(rcv_data, QtCore.QIODevice.ReadOnly) self.response.append(rcv_stream.readBool()) return self.response[-1]
def __init__(self, escena, bloqueMarker, rutinaPulsada=None, siEditando=False): super(MarkerSC, self).__init__(escena, bloqueMarker) self.rutinaPulsada = rutinaPulsada self.rutinaPulsadaCarga = None self.distBordes = 0.20 * bloqueMarker.anchoCasilla self.pixmap = QtSvg.QSvgRenderer( QtCore.QByteArray(bloqueMarker.xml.encode())) self.posicion2xy() self.siMove = False self.tpSize = None self.siEditando = siEditando self.siRecuadro = False if siEditando: self.setAcceptHoverEvents(True)
def setup_gui(self): filename = os.path.join(os.path.dirname(__file__), 'uniformlist_plugin.ui') data = QtCore.QByteArray(open(filename, 'rb').read()) buffer = QtCore.QBuffer(data) self.window = QtUiTools.QUiLoader().load(buffer) self.window.resize(350, 32 + self.size * 20) self.sliders = [None] * self.size self.labels = [None] * self.size top_layout = self.window.findChild(QtCore.QObject, 'gridLayout') for i in range(16): layout = self.window.findChild(QtCore.QObject, f"horizontalLayout_{i + 1}") if self.size <= i: for j in range(layout.count()): widget = layout.itemAt(j).widget() if widget: widget.close() top_layout.removeItem(layout) continue slider = self.window.findChild(QtCore.QObject, f"slider_{i + 1}") label = self.window.findChild(QtCore.QObject, f"value_{i + 1}") resolution = self.config['resolution'][i] slider.setRange(self.config['min'][i] * resolution, self.config['max'][i] * resolution) self.sliders[i] = slider self.labels[i] = label # Quick trick to workaround python namespace by "double-lambda" slider.valueChanged.connect((lambda i: (lambda *_: self.labels[ i].setText(f"{self.get_value(i): >4.2f}")))(i)) slider.setValue(self.config['default'][i] * resolution) # Quick trick to prevent this window from appearing before the main window QtCore.QTimer.singleShot(500, lambda *_: self.window.show())
def roleNames(self): """Role names are used by QML to map key to role""" byteRoles = self.roles.copy() for key in byteRoles: byteRoles[key] = QtCore.QByteArray( bytearray(byteRoles[key], 'utf-8')) return byteRoles
def mimeData(self, indexList): attrsString = ','.join([x.data() for x in indexList if x.isValid()]) mimeData = QtCore.QMimeData() mimeData.setData(ITEM_MIME_TYPE, QtCore.QByteArray(attrsString)) return mimeData
def qstream_read_array(stream: QtCore.QDataStream, datatype: np.dtype) -> np.array: """Read array data from a stream with a specified type""" data_array = QtCore.QByteArray() stream >> data_array data = np.frombuffer(data_array, dtype=datatype) return data
def __init__(self, combo, fps=15, audio_phonems=None): self.combo = combo # audio if combo is not None or audio_phonems is not None: if audio_phonems is None: audio_phonems = combo.get_audio_phonems() rate, wave = concat_segments(audio_phonems) self.audio_format = get_format(rate, wave) self.data = QtCore.QByteArray(wave.tobytes(order="C")) self.audio_input = QtCore.QBuffer(self.data) else: self.audio_format = None self.data = None self.audio_input = None self.timer = None self.audio_output = None self.fps = fps self.t = 0 self.period_ms = 1.0 / fps if audio_phonems is None: self.frames = get_loading_frames(fps) else: self.frames = self.get_video_extract(audio_phonems)
def mimeDataAdd(mimeData, mimeFormat, objects): """Sets mime data.""" data = QtCore.QByteArray() stream = QtCore.QDataStream(data, QtCore.QIODevice.WriteOnly) text = ":".join(objects) stream.writeQString(text) mimeData.setData(mimeFormat, data)
def saveFile(self): fileName = QtGui.QFileDialog.getSaveFileName(self, "Save file as", '', '*.cht') if fileName: f = QtCore.QFile(fileName) if f.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): for row in range(self.model.rowCount(QtCore.QModelIndex())): pieces = [] pieces.append( self.model.data( self.model.index(row, 0, QtCore.QModelIndex()), QtCore.Qt.DisplayRole)) pieces.append( str( self.model.data( self.model.index(row, 1, QtCore.QModelIndex()), QtCore.Qt.DisplayRole))) pieces.append( self.model.data( self.model.index(row, 0, QtCore.QModelIndex()), QtCore.Qt.DecorationRole).name()) f.write(QtCore.QByteArray(','.join(pieces))) f.write('\n') f.close() self.statusBar().showMessage("Saved %s" % fileName, 2000)
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: # pragma: no cover if (not event.buttons() & QtCore.Qt.LeftButton or (event.pos() - self.drag_start_pos).manhattanLength() < QtWidgets.QApplication.startDragDistance()): return super().mouseMoveEvent(event) index = self.tabAt(event.pos()) if index == -1: return super().mouseMoveEvent(event) rect = self.tabRect(index) pixmap = QtGui.QPixmap(rect.size()) self.render(pixmap, QtCore.QPoint(), QtGui.QRegion(rect)) mime_data = QtCore.QMimeData() mime_data.setData("application/x-pew2tabbar", QtCore.QByteArray().number(index)) drag = QtGui.QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(pixmap) drag.setDragCursor( QtGui.QCursor(QtCore.Qt.DragMoveCursor).pixmap(), QtCore.Qt.MoveAction) drag.exec_(QtCore.Qt.MoveAction)
def CadEmpresa(self): INSERI = CrudEmpresa() INSERI.idEmpresa = 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 = QtGui.QPixmap(self.lb_LogoEmpresa.pixmap()) data = QtCore.QByteArray() buf = QtCore.QBuffer(data) image.save(buf, 'PNG') INSERI.logo = str(data.toBase64(), encoding='utf8') INSERI.CadEmpresa() self.lb_NomeFantasia.setText(self.tx_Titulo.text()) self.lb_NomeFantasia2.setText(INSERI.subtitulo) self.setWindowTitle(INSERI.titulo + " " + INSERI.subtitulo)
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QtGui.QPixmap(child.pixmap()) itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) dataStream << pixmap << QtCore.QPoint(event.pos() - child.pos()) mimeData = QtCore.QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QtGui.QPixmap(pixmap) painter = QtGui.QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QtGui.QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction, QtCore.Qt.CopyAction) == QtCore.Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap)
def send_broadcast(self): broadcast_addresses = self.get_broadcast_addresses() for address in broadcast_addresses: datagram = self.this_device.get_name() self._socket.writeDatagram( QtCore.QByteArray(bytes(datagram, "ascii")), QtNetwork.QHostAddress(address), 45454)
def reset(self): self.posicion2xy() bm = self.bloqueDatos self.pixmap = QtSvg.QSvgRenderer(QtCore.QByteArray(bm.xml.encode())) self.setOpacity(bm.opacidad) self.setZValue(bm.position.orden) self.update()
def load_geometry(self): geometry = self.registry.get("window_geometry") if geometry: geometry = geometry[1:].strip("'") self.restoreGeometry(QtCore.QByteArray().fromPercentEncoding( bytearray(geometry, "utf-8")))
def mimeData(self, indexes): """This function is called to generate MIME data. This is used by drag and drop functionality for example. The data are encoded in JSON following this format: { [0, {"sentence": "Salut", "index": 15}], [7, {"sentence": "Les mecs", "index": 2}] } With 0 and 7 the associated rows. """ serializable_segments_dict = dict( ( index.row(), self.get_chosen_from_index(index).to_JSON_serializable() ) for index in indexes ) data = [(row, serializable) for row, serializable in serializable_segments_dict.items()] dragData = json.dumps(data) mimeData = QtCore.QMimeData() mimeData.setData("text/json", QtCore.QByteArray(str.encode(dragData))) return mimeData
def readPendingDatagrams(self): while self.socket.hasPendingDatagrams(): self.dgramCount += 1 datagram = QtCore.QByteArray() datagram.resize(self.socket.pendingDatagramSize()) (datagram, sender, senderPort) = self.socket.readDatagram(datagram.size()) ui.infoBrowser.append(f'{self.dgramCount} => Received {datagram.size()} bytes from {sender}')
def resetWidget(self): lidone = [] for iso, alm in self.dic.items(): if alm.donePV: lidone.append(iso) if self.current: reg = self.dic[self.current] licurrent = [self.current] liborder = reg.border liborderdone = [iso for iso in liborder if self.dic[iso].donePV] else: licurrent = liborder = liborderdone = None def modif(x, lista): line, default = x self.lineasSVG[line] = "." + ",.".join(lista) if lista else default modif(self.ln_done, lidone) modif(self.ln_current, licurrent) modif(self.ln_border, liborder) modif(self.ln_borderdone, liborderdone) x = "\n".join(self.lineasSVG) self.widget.load(QtCore.QByteArray(bytes(x, "utf-8"))) self.resetListaGrid()
def __init__(self, procesador): route = self.route = Routes.Transsiberian(procesador.configuration) titulo = "%s (%d)" % (_("Transsiberian Railway"), route.level) icono = Iconos.Train() extparam = "transsiberian" QTVarios.WDialogo.__init__(self, procesador.main_window, titulo, icono, extparam) self.procesador = procesador wsvg = QtSvg.QSvgWidget() x = self.route.get_txt().encode("utf-8") wsvg.load(QtCore.QByteArray(x)) wsvg.setFixedSize(762, 762.0 * 658.0 / 1148.0) lySVG = Colocacion.H().relleno(1).control(wsvg).relleno(1) # Title lbTit = self.LINE(_("Moscow"), _("Vladivostok"), 14, 500).altoFijo(26) lbKM = self.KM(route.total_km, 12, 500).altoFijo(26) self.set_style("White", "#33322C", lbTit, lbKM) lbKMdone = self.KM(route.km, 12, 500).altoFijo(26) self.set_border(lbKMdone) lyTitle = Colocacion.H().control(lbTit).control(lbKM).control(lbKMdone) if route.is_ended(): self.init_ended(route, lyTitle, lySVG) else: self.init_working(route, lyTitle, lySVG) self.restore_video(siTam=False)
def __init__(self, wowner, configuration, recno): expedition = Everest.Expedition(configuration, recno) self.li_routes, self.current, svg, label = expedition.gen_routes() titulo = _("Everest") icono = Iconos.Trekking() extparam = "expedition" QTVarios.WDialogo.__init__(self, wowner, titulo, icono, extparam) self.selected = False wsvg = QtSvg.QSvgWidget() wsvg.load(QtCore.QByteArray(svg)) wsvg.setFixedSize(762, int(762.0 * 520.0 / 1172.0)) lySVG = Colocacion.H().relleno(1).control(wsvg).relleno(1) li_acciones = ( (_("Climb"), Iconos.Empezar(), self.climb), None, (_("Close"), Iconos.MainMenu(), self.cancel), None, ) tb = Controles.TBrutina(self, li_acciones).vertical() if self.current is None: tb.setAccionVisible(self.climb, False) lyRot = Colocacion.H() for elem in label: lb_rotulo = Controles.LB(self, elem).align_center() lb_rotulo.setStyleSheet( "QWidget { border-style: groove; border-width: 2px; border-color: LightSlateGray ;}" ) lb_rotulo.ponTipoLetra(puntos=12, peso=700) lyRot.control(lb_rotulo) o_columns = Columnas.ListaColumnas() o_columns.nueva("ROUTE", _("Route"), 240, centered=True) o_columns.nueva("GAMES", _("Games"), 80, centered=True) o_columns.nueva("DONE", _("Done"), 80, centered=True) o_columns.nueva("TIME", _("Time"), 80, centered=True) o_columns.nueva("MTIME", _("Average time"), 80, centered=True) o_columns.nueva("MPOINTS", _("Av. lost points"), 80, centered=True) o_columns.nueva("TRIES", _("Max tries"), 80, centered=True) o_columns.nueva("TOLERANCE", _("Tolerance"), 80, centered=True) grid = Grid.Grid(self, o_columns, siSelecFilas=True, siSeleccionMultiple=False) grid.setMinimumWidth(grid.anchoColumnas() + 20) grid.coloresAlternados() lyG = Colocacion.V().otro(lyRot).control(grid).margen(0) lyR = Colocacion.H().control(tb).otro(lyG).margen(0) ly = Colocacion.V().otro(lySVG).otro(lyR).margen(3) self.setLayout(ly) self.restore_video(siTam=True, anchoDefecto=784, altoDefecto=670)
def mimeData(self, indexes: list[QtCore.QModelIndex]) -> QtCore.QMimeData: index_data = [{'internalId': i.internalId( ), 'row': i.row(), 'column': i.column()} for i in indexes] encoded_json = json.dumps(index_data).encode() mimeData = QtCore.QMimeData() mimeData.setData('text/index-json-array', QtCore.QByteArray(encoded_json)) # type: ignore return mimeData
def encode_pixmap(self, pixmap): # byteArray + buffer 通过Base64将图片编码为二进制格式,MIMEDATA相关 pix_bytes = QtCore.QByteArray() buffer = QtCore.QBuffer(pix_bytes) # buffer使用需要打开和关闭 buffer.open(QtCore.QBuffer.WriteOnly) pixmap.save(buffer, "PNG") return pix_bytes.toBase64().data()
def pixmap_to_bytes(pixmap, save_type="PNG"): bytarr = QtCore.QByteArray() buf = QtCore.QBuffer(bytarr) buf.open(QtCore.QIODevice.WriteOnly) pixmap.save(buf, save_type) return bytarr.data()
def process_started(self): for i in range(1, 85): cmds.currentTime(i) self.view.readColorBuffer(self.image, True) self.p.write( QtCore.QByteArray(bytearray(image_to_bytearray(self.image)))) self.p.closeWriteChannel()
def leePiezas(self, name=None): # name usado por compatibilidad dic = {} for pieza in "rnbqkpRNBQKP": fich = os.path.join(self.carpetaBF, "%s%s.svg" % ("w" if pieza.isupper() else "b", pieza.lower())) with open(fich, "rb") as f: qb = QtCore.QByteArray(f.read()) dic[pieza] = qb return dic