|
|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
#!/usr/bin/env python |
|
|
|
|
#!/usr/bin/env python3 |
|
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
# |
|
|
|
|
# Copyright 2016 <+YOU OR YOUR COMPANY+>. |
|
|
|
|
@ -31,27 +31,27 @@ from PyQt4.QtCore import QObject, pyqtSignal
|
|
|
|
|
class rds_table_qt_Signals(QObject): |
|
|
|
|
DataUpdateEvent = QtCore.pyqtSignal(dict) |
|
|
|
|
def __init__(self, parent=None): |
|
|
|
|
super(QtCore.QObject, self).__init__() |
|
|
|
|
super(QtCore.QObject, self).__init__() |
|
|
|
|
|
|
|
|
|
class rds_table_qt(gr.sync_block): |
|
|
|
|
""" |
|
|
|
|
docstring for block qtguitest |
|
|
|
|
""" |
|
|
|
|
def __init__(self,signals,nPorts): |
|
|
|
|
#QObject.__init__() |
|
|
|
|
#QObject.__init__() |
|
|
|
|
gr.sync_block.__init__(self, |
|
|
|
|
name="RDS Table", |
|
|
|
|
in_sig=None, |
|
|
|
|
out_sig=None) |
|
|
|
|
for i in range(0,nPorts): |
|
|
|
|
self.message_port_register_in(pmt.intern('in%d'%i)) |
|
|
|
|
self.set_msg_handler(pmt.intern('in%d'%i), functools.partial(self.handle_msg, port=i)) |
|
|
|
|
#self.message_port_register_in(pmt.intern('in1')) |
|
|
|
|
#self.message_port_register_in(pmt.intern('in2')) |
|
|
|
|
#self.set_msg_handler(pmt.intern('in1'), functools.partial(self.handle_msg, port=1)) |
|
|
|
|
#self.set_msg_handler(pmt.intern('in2'), functools.partial(self.handle_msg, port=2)) |
|
|
|
|
#code.interact(local=locals()) |
|
|
|
|
self.signals=signals |
|
|
|
|
for i in range(0,nPorts): |
|
|
|
|
self.message_port_register_in(pmt.intern('in%d'%i)) |
|
|
|
|
self.set_msg_handler(pmt.intern('in%d'%i), functools.partial(self.handle_msg, port=i)) |
|
|
|
|
#self.message_port_register_in(pmt.intern('in1')) |
|
|
|
|
#self.message_port_register_in(pmt.intern('in2')) |
|
|
|
|
#self.set_msg_handler(pmt.intern('in1'), functools.partial(self.handle_msg, port=1)) |
|
|
|
|
#self.set_msg_handler(pmt.intern('in2'), functools.partial(self.handle_msg, port=2)) |
|
|
|
|
#code.interact(local=locals()) |
|
|
|
|
self.signals=signals |
|
|
|
|
#/* type 0 = PI |
|
|
|
|
#* type 1 = PS |
|
|
|
|
#* type 2 = PTY |
|
|
|
|
@ -61,39 +61,39 @@ class rds_table_qt(gr.sync_block):
|
|
|
|
|
#* type 6 = Alternative Frequencies |
|
|
|
|
#* type 7 = decode errors int (out of 50), 51 == no_sync */ |
|
|
|
|
def handle_msg(self, msg, port): |
|
|
|
|
t = pmt.to_long(pmt.tuple_ref(msg, 0)) |
|
|
|
|
m = pmt.symbol_to_string(pmt.tuple_ref(msg, 1)) |
|
|
|
|
#code.interact(local=locals()) |
|
|
|
|
if(t==0): |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':0,'row':port,'string':m}) |
|
|
|
|
#self.PI=m |
|
|
|
|
#self.stations[str(port)+"PI"]=m |
|
|
|
|
elif(t==1): |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':2,'row':port,'string':m}) |
|
|
|
|
#self.PS=m |
|
|
|
|
#self.stations[str(port)+"PS"]=m |
|
|
|
|
elif(t==4): |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':5,'row':port,'string':m}) |
|
|
|
|
#self.RT=m |
|
|
|
|
#self.stations[str(port)+"RT"]=m |
|
|
|
|
elif(t==6):#alt freq |
|
|
|
|
#print("################alt freqs##################") |
|
|
|
|
#freqspmt=pmt.tuple_ref(msg, 1) |
|
|
|
|
#print(m) |
|
|
|
|
#pp.pprint(pmt.to_python(freqspmt) |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':3,'row':port,'string':m}) |
|
|
|
|
elif(t==5):#time |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':4,'row':port,'string':m}) |
|
|
|
|
t = pmt.to_long(pmt.tuple_ref(msg, 0)) |
|
|
|
|
m = pmt.symbol_to_string(pmt.tuple_ref(msg, 1)) |
|
|
|
|
#code.interact(local=locals()) |
|
|
|
|
if(t==0): |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':0,'row':port,'string':m}) |
|
|
|
|
#self.PI=m |
|
|
|
|
#self.stations[str(port)+"PI"]=m |
|
|
|
|
elif(t==1): |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':2,'row':port,'string':m}) |
|
|
|
|
#self.PS=m |
|
|
|
|
#self.stations[str(port)+"PS"]=m |
|
|
|
|
elif(t==4): |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':5,'row':port,'string':m}) |
|
|
|
|
#self.RT=m |
|
|
|
|
#self.stations[str(port)+"RT"]=m |
|
|
|
|
elif(t==6):#alt freq |
|
|
|
|
#print("################alt freqs##################") |
|
|
|
|
#freqspmt=pmt.tuple_ref(msg, 1) |
|
|
|
|
#print(m) |
|
|
|
|
#pp.pprint(pmt.to_python(freqspmt) |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':3,'row':port,'string':m}) |
|
|
|
|
elif(t==5):#time |
|
|
|
|
self.signals.DataUpdateEvent.emit({'col':4,'row':port,'string':m}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def handle_msg(self, msg): |
|
|
|
|
# self.signals.DataUpdateEvent.emit({'string':pmt.to_python(msg)}) |
|
|
|
|
# print(msg) |
|
|
|
|
# self.signals.DataUpdateEvent.emit({'string':pmt.to_python(msg)}) |
|
|
|
|
# print(msg) |
|
|
|
|
class rds_table_qt_Widget(QtGui.QWidget): |
|
|
|
|
def __init__(self, signals,label): |
|
|
|
|
print("gui initializing") |
|
|
|
|
self.signals = signals |
|
|
|
|
self.signals.DataUpdateEvent.connect(self.display_data) |
|
|
|
|
print("gui initializing") |
|
|
|
|
self.signals = signals |
|
|
|
|
self.signals.DataUpdateEvent.connect(self.display_data) |
|
|
|
|
""" Creates the QT Range widget """ |
|
|
|
|
QtGui.QWidget.__init__(self) |
|
|
|
|
layout = Qt.QVBoxLayout() |
|
|
|
|
@ -108,7 +108,7 @@ class rds_table_qt_Widget(QtGui.QWidget):
|
|
|
|
|
#Data |
|
|
|
|
|
|
|
|
|
self.data = {'ID':range(1,6), |
|
|
|
|
'freq':['','','',''], |
|
|
|
|
'freq':['','','',''], |
|
|
|
|
'name':['','','',''], |
|
|
|
|
'AF':['','','',''], |
|
|
|
|
'time':['','','',''], |
|
|
|
|
@ -120,15 +120,15 @@ class rds_table_qt_Widget(QtGui.QWidget):
|
|
|
|
|
#for n, key in enumerate(sorted(self.data.keys())): |
|
|
|
|
horHeaders.append(key) |
|
|
|
|
for m, item in enumerate(self.data[key]): |
|
|
|
|
if type(item)==int:#convert ints to strings |
|
|
|
|
newitem = QtGui.QTableWidgetItem(str(item)) |
|
|
|
|
else: |
|
|
|
|
if type(item)==int:#convert ints to strings |
|
|
|
|
newitem = QtGui.QTableWidgetItem(str(item)) |
|
|
|
|
else: |
|
|
|
|
newitem = QtGui.QTableWidgetItem(item) |
|
|
|
|
self.table.setItem(m, n, newitem) |
|
|
|
|
for i in range(0,4): |
|
|
|
|
button=QtGui.QPushButton("play") |
|
|
|
|
self.table.setCellWidget(i,self.table.columnCount()-1,button) |
|
|
|
|
button.clicked.connect(self.onCLick) |
|
|
|
|
button=QtGui.QPushButton("play") |
|
|
|
|
self.table.setCellWidget(i,self.table.columnCount()-1,button) |
|
|
|
|
button.clicked.connect(self.onCLick) |
|
|
|
|
|
|
|
|
|
#Add Header |
|
|
|
|
self.table.setHorizontalHeaderLabels(horHeaders) |
|
|
|
|
@ -138,40 +138,40 @@ class rds_table_qt_Widget(QtGui.QWidget):
|
|
|
|
|
layout.addWidget(self.button) |
|
|
|
|
|
|
|
|
|
def display_data(self, event): |
|
|
|
|
#pp.pprint(event) |
|
|
|
|
if type(event)==dict: |
|
|
|
|
if type(event['row']) == int and type(event['col']) == int: |
|
|
|
|
item=self.table.item(event['row'],event['col']) |
|
|
|
|
if event['col']==0 and event['string']!=item.text(): #clear data if PI changed |
|
|
|
|
for col in range(1,self.table.columnCount()-1): |
|
|
|
|
self.table.item(event['row'],col).setText('') |
|
|
|
|
if item.text()==event['string']: |
|
|
|
|
item.setTextColor(QtCore.Qt.black) |
|
|
|
|
else: |
|
|
|
|
item.setTextColor(QtCore.Qt.green) |
|
|
|
|
item.setText(event['string']) |
|
|
|
|
item.setFont(QtGui.QFont("Courier New")) |
|
|
|
|
#print("table updated") |
|
|
|
|
self.table.resizeColumnsToContents() |
|
|
|
|
else: |
|
|
|
|
self.table.currentItem().setText(event['string']) |
|
|
|
|
#pp.pprint(event) |
|
|
|
|
if type(event)==dict: |
|
|
|
|
if type(event['row']) == int and type(event['col']) == int: |
|
|
|
|
item=self.table.item(event['row'],event['col']) |
|
|
|
|
if event['col']==0 and event['string']!=item.text(): #clear data if PI changed |
|
|
|
|
for col in range(1,self.table.columnCount()-1): |
|
|
|
|
self.table.item(event['row'],col).setText('') |
|
|
|
|
if item.text()==event['string']: |
|
|
|
|
item.setTextColor(QtCore.Qt.black) |
|
|
|
|
else: |
|
|
|
|
item.setTextColor(QtCore.Qt.green) |
|
|
|
|
item.setText(event['string']) |
|
|
|
|
item.setFont(QtGui.QFont("Courier New")) |
|
|
|
|
#print("table updated") |
|
|
|
|
self.table.resizeColumnsToContents() |
|
|
|
|
else: |
|
|
|
|
self.table.currentItem().setText(event['string']) |
|
|
|
|
def reset_color(self): |
|
|
|
|
for i in range(0,self.table.rowCount()): |
|
|
|
|
for j in range(0,self.table.columnCount()): |
|
|
|
|
item = self.table.item(i,j) |
|
|
|
|
#code.interact(local=locals()) |
|
|
|
|
#print(item.type()) |
|
|
|
|
if item != '': |
|
|
|
|
try: |
|
|
|
|
item.setTextColor(QtCore.Qt.black) |
|
|
|
|
except: |
|
|
|
|
pass |
|
|
|
|
for j in range(0,self.table.columnCount()): |
|
|
|
|
item = self.table.item(i,j) |
|
|
|
|
#code.interact(local=locals()) |
|
|
|
|
#print(item.type()) |
|
|
|
|
if item != '': |
|
|
|
|
try: |
|
|
|
|
item.setTextColor(QtCore.Qt.black) |
|
|
|
|
except: |
|
|
|
|
pass |
|
|
|
|
#for item in self.table.items(): |
|
|
|
|
#item.setTextColor(QtCore.Qt.black) |
|
|
|
|
#item.setTextColor(QtCore.Qt.black) |
|
|
|
|
def onCLick(self): |
|
|
|
|
print("button clicked") |
|
|
|
|
self.reset_color() |
|
|
|
|
#pp.pprint(event) |
|
|
|
|
print("button clicked") |
|
|
|
|
self.reset_color() |
|
|
|
|
#pp.pprint(event) |
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
from PyQt4 import Qt |
|
|
|
|
import sys |
|
|
|
|
|