diff --git a/piker/ui/_cursor.py b/piker/ui/_cursor.py index d0f642e4..f6f8edde 100644 --- a/piker/ui/_cursor.py +++ b/piker/ui/_cursor.py @@ -109,11 +109,12 @@ class LineDot(pg.CurvePoint): # first = self._plot._arrays['ohlc'][0]['index'] # first = x[0] # i = index - first - i = index - x[0] - if i > 0 and i < len(y): - newPos = (index, y[i]) - QtWidgets.QGraphicsItem.setPos(self, *newPos) - return True + if index: + i = index - x[0] + if i > 0 and i < len(y): + newPos = (index, y[i]) + QtWidgets.QGraphicsItem.setPos(self, *newPos) + return True return False diff --git a/piker/ui/_forms.py b/piker/ui/_forms.py index 6406a199..1f1a7cd5 100644 --- a/piker/ui/_forms.py +++ b/piker/ui/_forms.py @@ -105,7 +105,7 @@ class Edit(QLineEdit): # TODO: somehow this math ain't right? chars_w_pxs = dpi_font.boundingRect('0'*self._chars).width() scale = round(dpi_font.scale()) - psh.setWidth(chars_w_pxs * scale) + psh.setWidth(int(chars_w_pxs * scale)) return psh def set_width_in_chars( @@ -218,7 +218,7 @@ class Selection(QComboBox): ) -> None: br = _font.boundingRect(str(char)) - _, h = br.width(), br.height() + _, h = br.width(), int(br.height()) # TODO: something better then this monkey patch view = self.view() @@ -330,7 +330,7 @@ class FieldsForm(QWidget): self.form.setSpacing(0) self.form.setHorizontalSpacing(0) - self.vbox.addLayout(self.form, stretch=1/3) + self.vbox.addLayout(self.form, stretch=3) self.labels: dict[str, QLabel] = {} self.fields: dict[str, QWidget] = {} @@ -557,8 +557,8 @@ class FillStatusBar(QProgressBar): self.font_size = font_size self.setFormat('') # label format - self.setMinimumWidth(width_px) - self.setMaximumWidth(width_px) + self.setMinimumWidth(int(width_px)) + self.setMaximumWidth(int(width_px)) def set_slots( self, @@ -573,7 +573,7 @@ class FillStatusBar(QProgressBar): approx_h, slots, ) - clipped = slots * tot_slot_h + 2*self.border_px + clipped = int(slots * tot_slot_h + 2*self.border_px) self.setMaximumHeight(clipped) slot_height_px = tot_slot_h - 2*self.slot_margin_px @@ -657,14 +657,14 @@ def mk_fill_status_bar( ) # size according to dpi scaled fonted contents to avoid # resizes on magnitude changes (eg. 9 -> 10 %) - min_w = _font.boundingRect('1000.0M% pnl').width() + min_w = int(_font.boundingRect('1000.0M% pnl').width()) left_label.setMinimumWidth(min_w) left_label.resize( min_w, left_label.size().height(), ) - bar_labels_lhs.addSpacing(5/8 * bar_h) + bar_labels_lhs.addSpacing(int(5/8 * bar_h)) bar_labels_lhs.addWidget( left_label, @@ -796,7 +796,7 @@ def mk_order_pane_layout( form.top_label = top_label # add pp fill bar + spacing - vbox.addLayout(hbox, stretch=1/3) + vbox.addLayout(hbox, stretch=3) # TODO: handle resize events and appropriately scale this # to the sidepane height? diff --git a/piker/ui/_l1.py b/piker/ui/_l1.py index 0ff264bc..bfa0551e 100644 --- a/piker/ui/_l1.py +++ b/piker/ui/_l1.py @@ -199,7 +199,14 @@ class LevelLabel(YAxisLabel): elif self._orient_v == 'top': lp, rp = rect.bottomLeft(), rect.bottomRight() - p.drawLine(lp.x(), lp.y(), rp.x(), rp.y()) + p.drawLine( + *map(int, [ + lp.x(), + lp.y(), + rp.x(), + rp.y(), + ]) + ) def highlight(self, pen) -> None: self._pen = pen diff --git a/piker/ui/_style.py b/piker/ui/_style.py index 6ba3b76a..b51331ab 100644 --- a/piker/ui/_style.py +++ b/piker/ui/_style.py @@ -142,8 +142,8 @@ class DpiAwareFont: self._font_inches = inches font_size = math.floor(inches * dpi) - log.info( - f"screen:{screen.name()}]\n" + log.debug( + f"screen:{screen.name()}\n" f"pDPI: {pdpi}, lDPI: {ldpi}, scale: {scale}\n" f"\nOur best guess font size is {font_size}\n" ) diff --git a/piker/ui/order_mode.py b/piker/ui/order_mode.py index 48be0384..6795f384 100644 --- a/piker/ui/order_mode.py +++ b/piker/ui/order_mode.py @@ -671,7 +671,9 @@ async def open_order_mode( form.fill_bar.height() # feed_label.height() ) - vbox.setSpacing((1 + 5/8)*_font.px_size) + vbox.setSpacing( + int((1 + 5/8)*_font.px_size) + ) # fill in brokerd feed info host, port = feed.portal.channel.raddr diff --git a/setup.py b/setup.py index ebd034fa..6f8fd898 100755 --- a/setup.py +++ b/setup.py @@ -52,6 +52,7 @@ setup( 'trio', 'trio-websocket', # 'tractor', # from github currently + 'msgspec', # performant IPC messaging 'async_generator', # brokers @@ -87,6 +88,7 @@ setup( "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", 'Intended Audience :: Financial and Insurance Industry', 'Intended Audience :: Science/Research', 'Intended Audience :: Developers',