diff --git a/python/rds_parser_table_qt.py b/python/rds_parser_table_qt.py
index 100ca3e..01a8860 100644
--- a/python/rds_parser_table_qt.py
+++ b/python/rds_parser_table_qt.py
@@ -176,7 +176,7 @@ class rds_parser_table_qt(gr.sync_block):#START
f=open(self.workdir+'pty-list.csv')
reader = csv.reader(f, delimiter=',', quotechar='"')
next(reader)#skip header
- self.pty_dict=dict((int(rows[0]),unicode(rows[1],errors='ignore'))
+ self.pty_dict=dict((int(rows[0]),rows[1])
for rows in reader)
f.close()
self.minute_count=0
@@ -269,7 +269,7 @@ class rds_parser_table_qt(gr.sync_block):#START
self.RDS_data[PI]["time"]={"timestring":"88:88","datestring":"00-00-0000","datetime":None}
self.RDS_data[PI]["wrong_block_ratio"]=1#100%
def handle_msg(self, msg, port): #port from 0 to 3
- if pmt.to_long(pmt.car(msg))==1: #sync/desync messages from RDS decoder
+ if pmt.is_integer(pmt.car(msg)) and pmt.to_long(pmt.car(msg))==1: #sync/desync messages from RDS decoder
synced=pmt.to_python(pmt.cdr(msg))
#print("port:%i, data: %s"%(port,data))
self.decoders[port]['synced']=synced
@@ -280,21 +280,21 @@ class rds_parser_table_qt(gr.sync_block):#START
wrong_block_ratio=1#100%
self.RDS_data[PI]["wrong_block_ratio"]=wrong_block_ratio
self.signals.DataUpdateEvent.emit({'PI':PI,'wrong_block_ratio':wrong_block_ratio,'dots':dots})
- elif pmt.to_long(pmt.car(msg))==2: #wrong_block_ratio messages from RDS decoder
+ elif pmt.is_integer(pmt.car(msg)) and pmt.to_long(pmt.car(msg))==2: #wrong_block_ratio messages from RDS decoder
wrong_block_ratio=pmt.to_python(pmt.cdr(msg))
PI=self.decoders[port]['PI']
if self.RDS_data.has_key(PI):
dots="."*self.RDS_data[PI]["blockcounts"]["any"]
self.RDS_data[PI]["wrong_block_ratio"]=wrong_block_ratio
self.signals.DataUpdateEvent.emit({'PI':PI,'wrong_block_ratio':wrong_block_ratio,'dots':dots})
- elif pmt.to_long(pmt.car(msg))==3: #carrier quality message
+ elif pmt.is_integer(pmt.car(msg)) and pmt.to_long(pmt.car(msg))==3: #carrier quality message
pilot_SNR=pmt.to_long(pmt.cdr(msg))
self.decoders[port]['pilot_SNR']=pilot_SNR
self.update_freq()
PI=self.decoders[port]['PI']
if self.RDS_data.has_key(PI):
self.signals.DataUpdateEvent.emit({'PI':PI,'pilot_SNR':pilot_SNR})
- elif pmt.to_long(pmt.car(msg))==4: #mode messages from RDS sync_decim
+ elif pmt.is_integer(pmt.car(msg)) and pmt.to_long(pmt.car(msg))==4: #mode messages from RDS sync_decim
mode=pmt.to_python(pmt.cdr(msg))
self.decoders[port]['decim_mode']=mode
self.update_freq()
@@ -322,11 +322,11 @@ class rds_parser_table_qt(gr.sync_block):#START
groupNR=array[2]&0b11110000
groupVar=array[2]&0b00001000
if (groupVar == 0):
- groupType=str(groupNR >> 4)+"A"
+ groupType=bytes(groupNR >> 4)+"A"
else:
- groupType=str(groupNR >> 4)+"B"
+ groupType=bytes(groupNR >> 4)+"B"
#if self.debug:
- #PI=str(port)+"_%02X%02X" %(array[0],array[1])
+ #PI=bytes(port)+"_%02X%02X" %(array[0],array[1])
#else:
#PI="%02X%02X" %(array[0],array[1])
PI="%02X%02X" %(array[0],array[1])
@@ -365,7 +365,7 @@ class rds_parser_table_qt(gr.sync_block):#START
if self.RDS_data[PI]["blockcounts"]["any"]==5:
self.RDS_data[PI]["blockcounts"]["any"]=0
if self.writeDB:
- t=(str(PI),groupType,self.RDS_data[PI]["blockcounts"][groupType])#TODO only update DB every few seconds
+ t=(bytes(PI),groupType,self.RDS_data[PI]["blockcounts"][groupType])#TODO only update DB every few seconds
db.execute("INSERT OR REPLACE INTO grouptypeCounts (PI,grouptype,count) VALUES (?,?,?)",t)
dots="."*self.RDS_data[PI]["blockcounts"]["any"]
self.RDS_data[PI]["TP"]=TP
@@ -380,7 +380,7 @@ class rds_parser_table_qt(gr.sync_block):#START
#add any received groups to DB (slow)
#content="%02X%02X%02X%02X%02X" %(array[3]&0x1f,array[4],array[5],array[6],array[7])
- #t=(str(datetime.now()),PI,self.RDS_data[PI]["PSN"],groupType,content)
+ #t=(bytes(datetime.now()),PI,self.RDS_data[PI]["PSN"],groupType,content)
#db.execute("INSERT INTO groups VALUES (?,?,?,?,?)",t)
if (groupType == "0A"):#AF PSN
@@ -396,7 +396,7 @@ class rds_parser_table_qt(gr.sync_block):#START
MS=(array[3]>>3)&0x1
self.RDS_data[PI]["TA"]=TA
#style='font-family:Courier New;color:%s'
- flag_string="TP:%i, TA:%i, MS:%i, DI:%s"%(TP,TA,MS,str(self.RDS_data[PI]["DI"]))
+ flag_string="TP:%i, TA:%i, MS:%i, DI:%s"%(TP,TA,MS,bytes(self.RDS_data[PI]["DI"]))
pty_colored=self.RDS_data[PI]["PTY"]
if TP==1:
if TA==1:
@@ -486,7 +486,7 @@ class rds_parser_table_qt(gr.sync_block):#START
#textcolor="black"
textcolor=""#use default color (white if background is black)
if not self.RDS_data[PI]["internals"]["last_valid_psn"]==self.RDS_data[PI]["PSN"]:#ignore duplicates
- t=(str(datetime.now()),PI,self.RDS_data[PI]["PSN"],"PSN_valid",self.RDS_data[PI]["PSN"])
+ t=(bytes(datetime.now()),PI,self.RDS_data[PI]["PSN"],"PSN_valid",self.RDS_data[PI]["PSN"])
if self.writeDB:
db.execute("INSERT INTO data (time,PI,PSN,dataType,data) VALUES (?,?,?,?,?)",t)
t=(self.RDS_data[PI]["PSN"],PI)
@@ -511,12 +511,12 @@ class rds_parser_table_qt(gr.sync_block):#START
PIN_valid= PIN_day in range(1,32) and PIN_hour in range(0,24) and PIN_minute in range(0,60)
if PIN_valid:
self.RDS_data[PI]["PIN"]=[PIN_day,PIN_hour,PIN_minute]
- data_string="radio paging code:%i,LA:%i,variant:%i,SLC:%04X,PIN (valid):%s "%(radio_paging,LA,variant,SLC,str([PIN_day,PIN_hour,PIN_minute]))
+ data_string="radio paging code:%i,LA:%i,variant:%i,SLC:%04X,PIN (valid):%s "%(radio_paging,LA,variant,SLC,bytes([PIN_day,PIN_hour,PIN_minute]))
else:
data_string="radio paging code:%i,LA:%i,variant:%i,SLC:%04X,PIN:%04X "%(radio_paging,LA,variant,SLC,PIN)
#%02X%02X%02X%02X%02X
- t=(str(datetime.now()),PI,self.RDS_data[PI]["PSN"],"PIN",data_string)
+ t=(bytes(datetime.now()),PI,self.RDS_data[PI]["PSN"],"PIN",data_string)
if self.writeDB:
db.execute("INSERT INTO data (time,PI,PSN,dataType,data) VALUES (?,?,?,?,?)",t)
if self.debug and not variant==0:#print if not seen before
@@ -558,7 +558,7 @@ class rds_parser_table_qt(gr.sync_block):#START
segment=chr(array[4])+chr(array[5])+chr(array[6])+chr(array[7])#EDIT:latedecode
#self.signals.DataUpdateEvent.emit({'col':5,'row':port,'PI':PI,'groupType':groupType,'adress':adr,'segment':segment})
- text_list=list(self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"])
+ text_list=list(self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"])
#determine text length:
try:
text_end=text_list.index('\r')
@@ -576,27 +576,27 @@ class rds_parser_table_qt(gr.sync_block):#START
text_list=['_']*64 #clear text
text_list[adr*4:adr*4+4]=segment
#reset stored text:
- #self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"]="_"*64 #done in text_list
- self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_valid"]=[False]*64
+ #self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"]="_"*64 #done in text_list
+ self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_valid"]=[False]*64
#predict RT from last texts:
for rt in self.RDS_data[PI]["internals"]["RT_history"]:
if rt[adr*4:adr*4+4]==list(segment):
- self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"]="".join(rt)
+ self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"]="".join(rt)
predicted=True
- self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_valid"][adr*4:adr*4+4]=[True] *4
+ self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_valid"][adr*4:adr*4+4]=[True] *4
if not predicted:
- self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"]="".join(text_list)
+ self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"]="".join(text_list)
#determine if (new) text is valid
- self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_all_valid"]=True
+ self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_all_valid"]=True
for i in range(0,text_end):
- if (not self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_valid"][i]):
- self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_all_valid"] = False
- if(self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_all_valid"]):
+ if (not self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_valid"][i]):
+ self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_all_valid"] = False
+ if(self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_all_valid"]):
#textcolor="black"
textcolor=""#use default color (white if background is black)
- l=list(self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"])
+ l=list(self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"])
rt="".join(l[0:text_end])#remove underscores(default symbol) after line end marker
if not self.RDS_data[PI]["internals"]["last_valid_rt"]==rt:#ignore duplicates #TODO add 2nd order duplicates ABAB
self.RDS_data[PI]["internals"]["RT_history"].append(l)
@@ -604,23 +604,23 @@ class rds_parser_table_qt(gr.sync_block):#START
self.RDS_data[PI]["internals"]["RT_history"].pop(0)
if self.writeDB:
t=(
- str(datetime.now()),PI,self.RDS_data[PI]["PSN"],
+ bytes(datetime.now()),PI,self.RDS_data[PI]["PSN"],
"RT",self.decode_chars(rt)
)
db.execute("INSERT INTO data (time,PI,PSN,dataType,data) VALUES (?,?,?,?,?)",t)
self.RDS_data[PI]["internals"]["last_valid_rt"]=rt
try:#save rt+ if it exist
if self.writeDB:
- t=(str(datetime.now()),PI,
+ t=(bytes(datetime.now()),PI,
self.RDS_data[PI]["PSN"],"RT+",
- self.decode_chars(str(self.RDS_data[PI]["RT+"]))
+ self.decode_chars(bytes(self.RDS_data[PI]["RT+"]))
)
db.execute("INSERT INTO data (time,PI,PSN,dataType,data) VALUES (?,?,?,?,?)",t)
except KeyError:
pass#no rt+ -> dont save
else:
textcolor="gray"
- display_text=self.decode_chars(self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"].split("\r")[0])
+ display_text=self.decode_chars(self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"].split("\r")[0])
formatted_text=self.color_text(display_text,adr*4,adr*4+4,textcolor,segmentcolor)
rtcol=self.colorder.index('text')
self.signals.DataUpdateEvent.emit({'col':rtcol,'row':port,'PI':PI,'string':formatted_text})
@@ -630,9 +630,9 @@ class rds_parser_table_qt(gr.sync_block):#START
app_data=int((array[4]<<8)|(array[5]))#content defined by ODA-app
app_group_raw=int(array[3]&0x1f) #group type in which this app is sent
if (app_group_raw&0x1 == 0):
- app_group=str(app_group_raw >> 1)+"A"
+ app_group=bytes(app_group_raw >> 1)+"A"
else:
- app_group=str(app_group_raw >> 1)+"B"
+ app_group=bytes(app_group_raw >> 1)+"B"
if not self.RDS_data[PI]["AID_list"].has_key(AID):#new ODA found
try:
@@ -715,7 +715,7 @@ class rds_parser_table_qt(gr.sync_block):#START
self.RDS_data[PI]["time"]["datestring"]=datestring
self.RDS_data[PI]["time"]["datetime"]=datetime(date.year,date.month,date.day,hours,minutes)+timedelta(hours=local_time_offset)
if self.writeDB:
- t=(str(datetime.now()),PI,self.RDS_data[PI]["PSN"],"CT",datestring+" "+timestring+"; datecode(MJD):"+str(datecode))
+ t=(bytes(datetime.now()),PI,self.RDS_data[PI]["PSN"],"CT",datestring+" "+timestring+"; datecode(MJD):"+bytes(datecode))
db.execute("INSERT INTO data (time,PI,PSN,dataType,data) VALUES (?,?,?,?,?)",t)
except ValueError as e:
print("ERROR: could not interpret time or date:")
@@ -738,7 +738,7 @@ class rds_parser_table_qt(gr.sync_block):#START
self.IH_data[PI][ih_data]={}
self.IH_data[PI][ih_data]["count"]=0
self.IH_data[PI][ih_data]["count"]+=1
- self.IH_data[PI][ih_data]["last_time"]=str(datetime.now())
+ self.IH_data[PI][ih_data]["last_time"]=bytes(datetime.now())
#TMC-alert-c (grouptype mostly 8A):
elif (self.RDS_data[PI]["AID_list"].has_key(52550)
and self.RDS_data[PI]["AID_list"][52550]["groupType"]==groupType):#TMC alert-C
@@ -763,7 +763,7 @@ class rds_parser_table_qt(gr.sync_block):#START
})#this gnuradio instance doesnt seem to be able to convert from numpy.int64 to pmt
self.message_port_pub(pmt.intern('tmc_raw'), send_pmt)
- #~ tmc_hash=hashlib.md5(str([PI,tmc_x,tmc_y,tmc_z])).hexdigest()
+ #~ tmc_hash=hashlib.md5(bytes([PI,tmc_x,tmc_y,tmc_z])).hexdigest()
tmc_T=tmc_x>>4 #0:TMC-message 1:tuning info/service provider name
#~ tmc_F=int((tmc_x>>3)&0x1) #identifies the message as a Single Group (F = 1) or Multi Group (F = 0)
#~ Y15=int(tmc_y>>15)
@@ -839,11 +839,11 @@ class rds_parser_table_qt(gr.sync_block):#START
tag2_start=int((tag2>>5)&(2**6-1))
tag2_len=int(tag2&(2**5-1))
if not self.RDS_data[PI]["RT+"]["last_item_toggle_bit"] == item_toggle_bit: #new item
- #self.RDS_data[PI]["RT+"]["history"][str(datetime.now())]=self.RDS_data[PI]["internals"]["last_rt_tooltip"]
- t=(str(datetime.now()),PI,self.RDS_data[PI]["PSN"],"RT+",str(self.RDS_data[PI]["RT+"]))
+ #self.RDS_data[PI]["RT+"]["history"][bytes(datetime.now())]=self.RDS_data[PI]["internals"]["last_rt_tooltip"]
+ t=(bytes(datetime.now()),PI,self.RDS_data[PI]["PSN"],"RT+",bytes(self.RDS_data[PI]["RT+"]))
if self.writeDB:
db.execute("INSERT INTO data (time,PI,PSN,dataType,data) VALUES (?,?,?,?,?)",t)
- self.RDS_data[PI]["RT+_history"][str(datetime.now())]=copy.deepcopy(self.RDS_data[PI]["RT+"])#save old item
+ self.RDS_data[PI]["RT+_history"][bytes(datetime.now())]=copy.deepcopy(self.RDS_data[PI]["RT+"])#save old item
self.RDS_data[PI]["RT+"]["last_item_toggle_bit"] = item_toggle_bit
rtcol=self.colorder.index('text')
if self.debug:
@@ -851,8 +851,8 @@ class rds_parser_table_qt(gr.sync_block):#START
self.signals.DataUpdateEvent.emit({'col':rtcol,'row':port,'PI':PI,'tooltip':""})
if self.RDS_data[PI].has_key("RT_0"):
ab_flag=self.RDS_data[PI]["RT_last_ab_flag"]
- rt=self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"]
- rt_valid=self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_valid"]
+ rt=self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"]
+ rt_valid=self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_valid"]
if not tag1_type=="DUMMY_CLASS" and all(rt_valid[tag1_start:tag1_start+tag1_len+1]):
self.RDS_data[PI]["RT+"][tag1_type]=rt[tag1_start:tag1_start+tag1_len+1]
self.RDS_data[PI]["internals"]["RT+_times"][tag1_type]=time.time()
@@ -872,8 +872,8 @@ class rds_parser_table_qt(gr.sync_block):#START
self.signals.DataUpdateEvent.emit({'col':rtpcol,'row':port,'PI':PI,'string':tags})
if(tag2_type=="ITEM.TITLE" and self.RDS_data[PI].has_key("RT_0")):#TODO remove duplicate code
ab_flag=self.RDS_data[PI]["RT_last_ab_flag"]
- rt=self.RDS_data[PI]["RT_"+str(ab_flag)]["RT"]
- rt_valid=self.RDS_data[PI]["RT_"+str(ab_flag)]["RT_valid"]
+ rt=self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT"]
+ rt_valid=self.RDS_data[PI]["RT_"+bytes(ab_flag)]["RT_valid"]
artist="?"
song="?"
if all(rt_valid[tag1_start:tag1_start+tag1_len+1]):
@@ -1050,7 +1050,7 @@ class rds_parser_table_qt(gr.sync_block):#START
print("symbol not decoded: "+"?%02X?"%ord(char)+
"in string:"+return_string)
pass
- if not type(return_string)==unicode:
+ if not type(return_string)==str:
code.interact(local=locals())
return return_string
def color_text(self, text, start,end,textcolor,segmentcolor):
@@ -1075,42 +1075,42 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
self.setLayout(layout)
#self.decoder_to_PI={}
self.PI_to_row={}
- self.table=QtGui.QTableWidget(self)
+ self.table=QtWidgets.QTableWidget(self)
rowcount=0
self.table.setRowCount(rowcount)
#self.colorder=['ID','freq','name','buttons','PTY','AF','time','text','quality']
self.colorder=tableobj.colorder
self.table.setColumnCount(len(self.colorder))
- self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) #disallow editing
+ self.table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) #disallow editing
layout.addWidget(self.table)
self.table.setHorizontalHeaderLabels(self.colorder)
#self.table.setMaximumHeight(300)#TODO use dynamic value
button_layout = Qt.QHBoxLayout()
- codebutton = QtGui.QPushButton("code.interact")
+ codebutton = QtWidgets.QPushButton("code.interact")
codebutton.clicked.connect(self.onCLick)
button_layout.addWidget(codebutton)
- ih_button = QtGui.QPushButton("show IH data")
+ ih_button = QtWidgets.QPushButton("show IH data")
ih_button.clicked.connect(self.showIHdata)
button_layout.addWidget(ih_button)
- save_button = QtGui.QPushButton("save")
+ save_button = QtWidgets.QPushButton("save")
save_button.clicked.connect(self.saveData)
button_layout.addWidget(save_button)
- print_button = QtGui.QPushButton("print profile")
+ print_button = QtWidgets.QPushButton("print profile")
print_button.clicked.connect(self.printProfile)
button_layout.addWidget(print_button)
- mode_button = QtGui.QPushButton("searchMode")
+ mode_button = QtWidgets.QPushButton("searchMode")
mode_button.clicked.connect(self.switchMode)
button_layout.addWidget(mode_button)
layout.addLayout(button_layout)
label_layout = Qt.QHBoxLayout()
- self.freq_label=QtGui.QLabel("decoder frequencies:")
+ self.freq_label=QtWidgets.QLabel("decoder frequencies:")
self.freq_label.setWordWrap(True)
- self.freq_label.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
- QtGui.QSizePolicy.Ignored))#expand in horizontal direction and only wrap if window too small
+ self.freq_label.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
+ QtWidgets.QSizePolicy.Ignored))#expand in horizontal direction and only wrap if window too small
self.freq_label.setTextFormat(QtCore.Qt.RichText)#instead of AutoText
- self.count_label=QtGui.QLabel("count:")
+ self.count_label=QtWidgets.QLabel("count:")
self.count_label.setAlignment(QtCore.Qt.AlignRight)
label_layout.addWidget(self.freq_label)
label_layout.addWidget(self.count_label)
@@ -1118,7 +1118,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
#self.setMinimumSize(Qt.QSize(500,40*self.tableobj.nPorts))
self.setMinimumSize(Qt.QSize(500,40*(4+self.tableobj.nPorts)))
self.lastResizeTime=0
- self.clip = QtGui.QApplication.clipboard()
+ self.clip = QtWidgets.QApplication.clipboard()
#self.cb.clear(mode=cb.Clipboard )
#self.cb.setText("Clipboard Text", mode=cb.Clipboard)
def keyPressEvent(self, e):
@@ -1129,7 +1129,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
if e.key() == QtCore.Qt.Key_C: #copy
try:
qs = self.table.cellWidget(selected.topRow(),selected.leftColumn()).text()#get QString from table
- s=re.sub("<.*?>","", str(qs))#remove html tags
+ s=re.sub("<.*?>","", bytes(qs))#remove html tags
self.clip.setText(s)
except Exception as e:
print(e)
@@ -1138,25 +1138,25 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
rowPosition = self.table.rowCount()
self.table.insertRow(rowPosition)
#for col in range(self.table.columnCount()-1):#all labels except in last column -> buttons
-# self.table.setCellWidget(rowPosition,col,QtGui.QLabel())
+# self.table.setCellWidget(rowPosition,col,QtWidgets.QLabel())
#initialize labels everywhere:
for col in range(self.table.columnCount()):
- self.table.setCellWidget(rowPosition,col,QtGui.QLabel())
+ self.table.setCellWidget(rowPosition,col,QtWidgets.QLabel())
button_layout = Qt.QHBoxLayout()
- details_button=QtGui.QPushButton("Detail")
+ details_button=QtWidgets.QPushButton("Detail")
details_button.clicked.connect(functools.partial(self.getDetails, row=rowPosition))
button_layout.addWidget(details_button)
#2017-03-17 disabled LR buttons
#2017-04-24 enabled LR buttons
- left_button=QtGui.QPushButton("L")
+ left_button=QtWidgets.QPushButton("L")
#left_button.clicked.connect(functools.partial(self.setAudio, row=rowPosition,audio_channel="left"))
left_button.clicked.connect(functools.partial(self.setAudio2, row=rowPosition,audio_channel=0))
button_layout.addWidget(left_button)
- center_button=QtGui.QPushButton("C")
+ center_button=QtWidgets.QPushButton("C")
#center_button.clicked.connect(functools.partial(self.setAudio, row=rowPosition,audio_channel="center"))
center_button.clicked.connect(functools.partial(self.setAudio2, row=rowPosition,audio_channel=1))
button_layout.addWidget(center_button)
- right_button=QtGui.QPushButton("R")
+ right_button=QtWidgets.QPushButton("R")
#right_button.clicked.connect(functools.partial(self.setAudio, row=rowPosition,audio_channel="right"))
right_button.clicked.connect(functools.partial(self.setAudio2, row=rowPosition,audio_channel=2))
button_layout.addWidget(right_button)
@@ -1213,7 +1213,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
if event.has_key('AF'):
#setAF
PIcol=self.colorder.index('AF')
- self.table.cellWidget(row,PIcol).setText(str(event['AF']['number']))
+ self.table.cellWidget(row,PIcol).setText(bytes(event['AF']['number']))
if event.has_key('PSN'):
#setPSN
PSNcol=self.colorder.index('name')
@@ -1231,7 +1231,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
#send_pmt = pmt.string_to_symbol("switch mode")
self.tableobj.message_port_pub(pmt.intern('ctrl'), send_pmt)
def saveData(self):
- filename="RDS_data_"+str(datetime.now())+".txt"
+ filename="RDS_data_"+bytes(datetime.now())+".txt"
f=open(self.tableobj.workdir+filename,"w")
rds_data=copy.deepcopy(self.tableobj.RDS_data)
for PI in sorted(rds_data):
@@ -1246,7 +1246,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
print("data saved in file %s"%filename)
def showIHdata(self):
view=Qt.QDialog()
- l=QtGui.QLabel("In House Data:\n%s"%pp.pformat(self.tableobj.IH_data))
+ l=QtWidgets.QLabel("In House Data:\n%s"%pp.pformat(self.tableobj.IH_data))
l.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse |
QtCore.Qt.TextSelectableByKeyboard)
l.setWordWrap(True)
@@ -1258,7 +1258,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
def setAudio(self,row,audio_channel):
PIcol=self.colorder.index('ID')
- PI=str(self.table.cellWidget(row,PIcol).text())
+ PI=bytes(self.table.cellWidget(row,PIcol).text())
freq=int(self.tableobj.RDS_data[PI]['AF']['main'])
#print("setaudio row:%i, chan:%s, PI:%s,freq:%i"%(row,audio_channel,PI,freq))
send_pmt = pmt.pmt_to_python.pmt_from_dict({"cmd":"set_audio_freq",
@@ -1271,7 +1271,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
def setAudio2(self,row,audio_channel):
PIcol=self.colorder.index('ID')
- PI=str(self.table.cellWidget(row,PIcol).text())
+ PI=bytes(self.table.cellWidget(row,PIcol).text())
#find port:
for port,decoder in enumerate(self.tableobj.decoders):
if decoder['PI']==PI:
@@ -1284,7 +1284,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
def getDetails(self,row):
PIcol=self.colorder.index('ID')
- PI=str(self.table.cellWidget(row,PIcol).text())
+ PI=bytes(self.table.cellWidget(row,PIcol).text())
view = chart.DialogViewer()
if self.tableobj.PI_dict.has_key(PI) and self.tableobj.PI_dict[PI]>3:
#dont print piechart if no packets received (detected via EON)
@@ -1297,7 +1297,7 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
#and sorts based on integer valure of number in front
for key in sorted(blockcounts,key=lambda elem: int(elem[0:-1])):
count=blockcounts[key]
- table.addRow([key+": "+str(count),count])
+ table.addRow([key+": "+bytes(count),count])
mychart=chart.PieChart(table)
view.setGraph(mychart)
#view.resize(360, 240)
@@ -1313,15 +1313,15 @@ class rds_parser_table_qt_Widget(QtWidgets.QWidget):
#combine char lists into strings (more compact)
except KeyError:
pass
- l=QtGui.QLabel("Data:%s"%pp.pformat(rds_data))
+ l=QtWidgets.QLabel("Data:%s"%pp.pformat(rds_data))
l.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse |
QtCore.Qt.TextSelectableByKeyboard)
l.setWordWrap(True)
- #l=QtGui.QLabel("Data:")
+ #l=QtWidgets.QLabel("Data:")
#view.layout().addWidget(l)
- scrollArea = QtGui.QScrollArea(self)
+ scrollArea = QtWidgets.QScrollArea(self)
scrollArea.setWidgetResizable(True)
scrollArea.setWidget(l)
view.layout().addWidget(scrollArea)