Skip to content

Commit 5aa7c18

Browse files
authored
avoid graph overlapping legend in spectrum analyzer (#816)
1 parent 8506d20 commit 5aa7c18

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

src/urh/simulator/Simulator.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ def process_message(self):
323323
self.last_sent_message = msg
324324
else:
325325
# we have to receive a message
326-
self.log_message("<i>Waiting for message {}</i>".format(msg.index()))
326+
self.log_message("Waiting for message {}...".format(msg.index()))
327327
sniffer = self.sniffer
328328
if sniffer is None:
329329
self.log_message("Fatal: No sniffer configured")
@@ -334,6 +334,7 @@ def process_message(self):
334334
max_retries = self.project_manager.simulator_retries
335335
while self.is_simulating and not self.simulation_is_finished() and retry < max_retries:
336336
received_msg = self.receive_message(sniffer)
337+
self.log_message(" Received {} data bits".format(len(received_msg)))
337338

338339
if not self.is_simulating:
339340
return
@@ -353,7 +354,7 @@ def process_message(self):
353354
received_msg.decoder = new_message.decoder
354355
received_msg.message_type = new_message.message_type
355356

356-
self.log_message("Message {}: Check whether received data matches".format(msg.index()))
357+
self.log_message(" Check whether received data matches")
357358
check_result, error_msg = self.check_message(received_msg, new_message, retry=retry,
358359
msg_index=msg.index())
359360

src/urh/ui/painting/FFTSceneManager.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@ def show_scene_section(self, x1: float, x2: float, subpath_ranges=None, colors=N
3333

3434
def init_scene(self, draw_grid=True):
3535
self.scene.draw_grid = draw_grid
36-
minimum = -4.5
37-
maximum = 2
3836

3937
self.peak = self.plot_data if len(self.peak) < self.num_samples else np.maximum(self.peak, self.plot_data)
40-
self.scene.setSceneRect(0, minimum, self.num_samples, maximum - minimum)
38+
self.scene.setSceneRect(0, -5, self.num_samples, 10)
4139

4240
def clear_path(self):
4341
for item in self.scene.items():

src/urh/ui/painting/GridScene.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import numpy as np
2-
from PyQt5.QtCore import QRectF, QLineF, QPointF
2+
from PyQt5.QtCore import QRectF, QLineF, QPointF, Qt
33
from PyQt5.QtGui import QPainter, QFont, QFontMetrics, QPen, QTransform, QBrush
44

55
from urh import settings
@@ -16,10 +16,9 @@ def __init__(self, parent=None):
1616
self.frequencies = []
1717
self.frequency_marker = None
1818
super().__init__(parent)
19-
self.setSceneRect(0,0,10,10)
19+
self.setSceneRect(0, 0, 10, 10)
2020

2121
def drawBackground(self, painter: QPainter, rect: QRectF):
22-
# freqs = np.fft.fftfreq(len(w), 1 / self.sample_rate)
2322
if self.draw_grid and len(self.frequencies) > 0:
2423
painter.setPen(QPen(painter.pen().color(), 0))
2524
parent_width = self.parent().width() if hasattr(self.parent(), "width") else 750
@@ -39,29 +38,30 @@ def drawBackground(self, painter: QPainter, rect: QRectF):
3938
bottom = rect.bottom() - (rect.bottom() % y_grid_size)
4039
right_border = int(rect.right()) if rect.right() < len(self.frequencies) else len(self.frequencies)
4140

41+
scale_x, scale_y = util.calc_x_y_scale(rect, self.parent())
42+
43+
fh = self.font_metrics.height()
4244
x_range = list(range(x_mid, left, -x_grid_size)) + list(range(x_mid, right_border, x_grid_size))
43-
lines = [QLineF(x, rect.top(), x, bottom) for x in x_range] \
45+
lines = [QLineF(x, rect.top(), x, bottom-fh*scale_y) for x in x_range] \
4446
+ [QLineF(rect.left(), y, rect.right(), y) for y in np.arange(top, bottom, y_grid_size)]
4547

48+
pen = painter.pen()
49+
pen.setStyle(Qt.DotLine)
50+
painter.setPen(pen)
4651
painter.drawLines(lines)
47-
scale_x, scale_y = util.calc_x_y_scale(rect, self.parent())
48-
4952
painter.scale(scale_x, scale_y)
5053
counter = -1 # Counter for Label for every second line
5154

5255
for x in x_range:
5356
freq = self.frequencies[x]
5457
counter += 1
58+
if freq == 0:
59+
counter = 0
5560

56-
if freq != 0 and (counter % 2 != 0): # Label for every second line
61+
if freq != 0 and (counter % 2 != 0): # Label for every second line
5762
continue
5863

59-
if freq != 0:
60-
prefix = "+" if freq > 0 else ""
61-
value = prefix+Formatter.big_value_with_suffix(freq, 2)
62-
else:
63-
counter = 0
64-
value = Formatter.big_value_with_suffix(self.center_freq)
64+
value = Formatter.big_value_with_suffix(self.center_freq + freq, 2)
6565
font_width = self.font_metrics.width(value)
6666
painter.drawText(QPointF(x / scale_x - font_width / 2, bottom / scale_y), value)
6767

0 commit comments

Comments
 (0)