diff --git a/rtlsdr_scanner/__main__.py b/rtlsdr_scanner/__main__.py
index 1fb93fb..b6790d9 100755
--- a/rtlsdr_scanner/__main__.py
+++ b/rtlsdr_scanner/__main__.py
@@ -36,7 +36,7 @@
import rtlsdr # @UnusedImport
import wx # @UnusedImport
except ImportError as error:
- print 'Import error: {}'.format(error)
+ print('Import error: {}'.format(error))
input('\nError importing libraries\nPress [Return] to exit')
exit(1)
@@ -109,20 +109,20 @@ def __arguments():
args.dirname, args.filename = os.path.split(args.file)
if error is not None:
- print "Error: {}".format(error)
+ print("Error: {}".format(error))
parser.exit(1)
return isGui, (args)
if __name__ == '__main__':
- print APP_NAME + "\n"
+ print(APP_NAME + "\n")
isGui, args = __arguments()
if isGui:
app = RtlSdrScanner()
app.SetClassName(APP_NAME)
- wx.Locale().Init2()
+ wx.Locale().Init()
frame = FrameMain(APP_NAME)
if args.file is not None:
frame.open(os.path.abspath(args.dirname), args.filename)
@@ -131,5 +131,5 @@ def __arguments():
try:
Cli(args)
except KeyboardInterrupt:
- print '\nAborted'
+ print('\nAborted')
exit(1)
diff --git a/rtlsdr_scanner/cli.py b/rtlsdr_scanner/cli.py
index 1ac81af..34a4e0b 100644
--- a/rtlsdr_scanner/cli.py
+++ b/rtlsdr_scanner/cli.py
@@ -23,14 +23,14 @@
# along with this program. If not, see .
#
-import Queue
+from six.moves import queue as Queue
from collections import OrderedDict
import os
import sys
from threading import Thread
import threading
import time
-from urlparse import urlparse
+from six.moves.urllib.parse import urlparse
from rtlsdr_scanner.constants import SAMPLE_RATE
from rtlsdr_scanner.devices import DeviceRTL, get_devices_rtl
@@ -126,7 +126,7 @@ def __init__(self, args):
error = 'No devices found'
if error is not None:
- print "Error: {}".format(error)
+ print("Error: {}".format(error))
exit(1)
self.settings.start = start
@@ -137,19 +137,19 @@ def __init__(self, args):
self.settings.devicesRtl[index].gain = gain
self.settings.devicesRtl[index].lo = lo
- print "{} - {}MHz".format(start, end)
- print "{} Sweeps".format(sweeps)
- print "{}dB Gain".format(gain)
- print "{}s Dwell".format(self.settings.dwell)
- print "{} FFT points".format(nfft)
- print "{}MHz LO".format(lo)
+ print("{} - {}MHz".format(start, end))
+ print("{} Sweeps".format(sweeps))
+ print("{}dB Gain".format(gain))
+ print("{}s Dwell".format(self.settings.dwell))
+ print("{} FFT points".format(nfft))
+ print("{}MHz LO".format(lo))
if remote is not None:
- print remote
+ print(remote)
else:
- print self.settings.devicesRtl[index].name
+ print(self.settings.devicesRtl[index].name)
if len(self.settings.devicesGps):
- print 'Using GPS configuration \'{}\''.format(self.settings.devicesGps[0].name)
+ print('Using GPS configuration \'{}\''.format(self.settings.devicesGps[0].name))
self.threadLocation = ThreadLocation(self.queueLocation,
self.settings.devicesGps[0])
if not self.__gps_wait():
@@ -169,10 +169,10 @@ def __init__(self, args):
export_plot(fullName, exportType, self.spectrum)
self.__gps_stop()
- print "Done"
+ print("Done")
def __gps_wait(self):
- print '\nWaiting for GPS fix: {}'.format(self.settings.devicesGps[0].get_desc())
+ print('\nWaiting for GPS fix: {}'.format(self.settings.devicesGps[0].get_desc()))
while True:
if not self.queueLocation.empty():
@@ -191,7 +191,7 @@ def __scan(self, sweeps, settings, index):
samples = next_2_to_pow(int(samples))
for sweep in range(0, sweeps):
- print '\nSweep {}:'.format(sweep + 1)
+ print('\nSweep {}:'.format(sweep + 1))
threadScan = ThreadScan(self.queueNotify, self.queueScan, None,
settings, index, samples, False)
while threadScan.isAlive() or self.steps > 0:
@@ -200,11 +200,11 @@ def __scan(self, sweeps, settings, index):
if not self.queueLocation.empty():
self.__process_event(self.queueLocation)
if self.settings.scanDelay > 0 and sweep < sweeps - 1:
- print '\nDelaying {}s'.format(self.settings.scanDelay)
+ print('\nDelaying {}s'.format(self.settings.scanDelay))
time.sleep(self.settings.scanDelay)
threadScan.rtl_close()
- print ""
- print ""
+ print("")
+ print("")
def __process_event(self, queue):
event = queue.get()
@@ -213,7 +213,7 @@ def __process_event(self, queue):
arg2 = event.data.get_arg2()
if status == Event.STARTING:
- print "Starting"
+ print("Starting")
elif status == Event.STEPS:
self.stepsTotal = (arg1 + 1) * 2
self.steps = self.stepsTotal
@@ -232,7 +232,7 @@ def __process_event(self, queue):
process.start()
self.__progress()
elif status == Event.ERROR:
- print "Error: {}".format(arg2)
+ print("Error: {}".format(arg2))
exit(1)
elif status == Event.PROCESSED:
offset = self.settings.devicesRtl[self.settings.indexRtl].offset
@@ -253,7 +253,7 @@ def __process_event(self, queue):
arg2[1],
arg2[2])
elif status == Event.LOC_ERR:
- print 'Error: {}'.format(arg2)
+ print('Error: {}'.format(arg2))
exit(1)
return status
@@ -265,5 +265,5 @@ def __progress(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/constants.py b/rtlsdr_scanner/constants.py
index d9e6b97..b94bd00 100644
--- a/rtlsdr_scanner/constants.py
+++ b/rtlsdr_scanner/constants.py
@@ -106,5 +106,5 @@ class Markers(object):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/devices.py b/rtlsdr_scanner/devices.py
index 58bdad5..f4ef5d4 100644
--- a/rtlsdr_scanner/devices.py
+++ b/rtlsdr_scanner/devices.py
@@ -147,13 +147,13 @@ def get_devices_rtl(currentDevices=None, statusBar=None):
def format_device_rtl_name(name):
- remove = ["/", "\\"]
+ remove = [b"/", b"\\"]
for char in remove:
- name = name.replace(char, " ")
+ name = name.replace(char, b" ")
return name
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_devices.py b/rtlsdr_scanner/dialogs_devices.py
index e7d67fa..dee6b54 100644
--- a/rtlsdr_scanner/dialogs_devices.py
+++ b/rtlsdr_scanner/dialogs_devices.py
@@ -23,9 +23,9 @@
# along with this program. If not, see .
#
-import Queue
+from six.moves import queue as Queue
import copy
-from urlparse import urlparse
+from six.moves.urllib.parse import urlparse
from wx import grid
import wx
@@ -74,7 +74,7 @@ def __init__(self, parent, devices, settings):
dc.SetFont(self.gridDev.GetLabelFont())
maxHeight = 0
for i in range(self.COLS - 1):
- _w, h, _hl = dc.GetMultiLineTextExtent(self.gridDev.GetColLabelValue(i))
+ _w, h, _hl = dc.GetFullMultiLineTextExtent(self.gridDev.GetColLabelValue(i))
if h > maxHeight:
maxHeight = h
self.gridDev.SetColLabelSize(maxHeight * 1.25)
@@ -284,12 +284,12 @@ def __init__(self, parent, settings):
wx.Dialog.__init__(self, parent=parent, title="GPS")
self.checkGps = wx.CheckBox(self, wx.ID_ANY, "Enable GPS")
- self.checkGps.SetToolTipString('Record GPS locations in scans')
+ self.checkGps.SetToolTip('Record GPS locations in scans')
self.checkGps.SetValue(settings.gps)
self.Bind(wx.EVT_CHECKBOX, self.__on_check, self.checkGps)
self.checkGpsRetry = wx.CheckBox(self, wx.ID_ANY, "Retry after disconnection")
- self.checkGpsRetry.SetToolTipString('Retry GPS if disconnected')
+ self.checkGpsRetry.SetToolTip('Retry GPS if disconnected')
self.checkGpsRetry.SetValue(settings.gpsRetry)
self.checkGpsRetry.Enable(settings.gps)
@@ -714,5 +714,5 @@ def __add_raw(self, text):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_file.py b/rtlsdr_scanner/dialogs_file.py
index 30eec8c..e22634c 100644
--- a/rtlsdr_scanner/dialogs_file.py
+++ b/rtlsdr_scanner/dialogs_file.py
@@ -23,8 +23,8 @@
# along with this program. If not, see .
#
-import Queue
-import cPickle
+from six.moves import queue as Queue
+from six.moves import cPickle
import os
from PIL import Image
@@ -377,7 +377,7 @@ def __init__(self, parent, spectrum, settings):
self.textSize = wx.StaticText(self)
buttonSize = wx.Button(self, label='Change...')
- buttonSize.SetToolTipString('Change exported image size')
+ buttonSize.SetToolTip('Change exported image size')
self.Bind(wx.EVT_BUTTON, self.__on_imagesize, buttonSize)
self.__show_image_size()
@@ -610,7 +610,7 @@ def __init__(self, parent, spectrum, location, settings):
textMesh = wx.StaticText(self, label='Mesh')
self.checkMesh = wx.CheckBox(self, label='On')
- self.checkMesh.SetToolTipString('Signal level mesh')
+ self.checkMesh.SetToolTip('Signal level mesh')
self.checkMesh.SetValue(self.plotMesh)
self.Bind(wx.EVT_CHECKBOX, self.__on_mesh, self.checkMesh)
self.choiceMapMesh = wx.Choice(self, choices=colours)
@@ -628,7 +628,7 @@ def __init__(self, parent, spectrum, location, settings):
colours = get_colours()
textHeat = wx.StaticText(self, label='Heat map')
self.checkHeat = wx.CheckBox(self, label='On')
- self.checkHeat.SetToolTipString('GPS location heatmap')
+ self.checkHeat.SetToolTip('GPS location heatmap')
self.checkHeat.SetValue(self.plotHeat)
self.Bind(wx.EVT_CHECKBOX, self.__on_heat, self.checkHeat)
self.choiceMapHeat = wx.Choice(self, choices=colours)
@@ -646,7 +646,7 @@ def __init__(self, parent, spectrum, location, settings):
textRange = wx.StaticText(self, label='Range')
textCentre = wx.StaticText(self, label='Centre')
self.spinCentre = wx.SpinCtrl(self)
- self.spinCentre.SetToolTipString('Centre frequency (kHz)')
+ self.spinCentre.SetToolTip('Centre frequency (kHz)')
self.spinCentre.SetRange(freqMin, freqMax)
self.spinCentre.SetValue(freqMin + bw / 2)
sizerCentre = wx.BoxSizer(wx.HORIZONTAL)
@@ -654,7 +654,7 @@ def __init__(self, parent, spectrum, location, settings):
sizerCentre.Add(self.spinCentre, flag=wx.ALL, border=5)
textBw = wx.StaticText(self, label='Bandwidth')
self.spinBw = wx.SpinCtrl(self)
- self.spinBw.SetToolTipString('Bandwidth (kHz)')
+ self.spinBw.SetToolTip('Bandwidth (kHz)')
self.spinBw.SetRange(1, bw)
self.spinBw.SetValue(bw / 10)
sizerBw = wx.BoxSizer(wx.HORIZONTAL)
@@ -671,7 +671,7 @@ def __init__(self, parent, spectrum, location, settings):
textOutput = wx.StaticText(self, label='Output')
self.textRes = wx.StaticText(self)
buttonRes = wx.Button(self, label='Change...')
- buttonRes.SetToolTipString('Change output resolution')
+ buttonRes.SetToolTip('Change output resolution')
self.Bind(wx.EVT_BUTTON, self.__on_imageres, buttonRes)
sizerRes = wx.BoxSizer(wx.HORIZONTAL)
sizerRes.Add(self.textRes, flag=wx.ALL, border=5)
@@ -762,7 +762,7 @@ def __draw_plot(self):
y = []
z = []
- for coord, peak in coords.iteritems():
+ for coord, peak in coords.items():
x.append(coord[1])
y.append(coord[0])
z.append(peak)
@@ -1071,5 +1071,5 @@ def get_restored(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_help.py b/rtlsdr_scanner/dialogs_help.py
index 7057e64..9bb6013 100644
--- a/rtlsdr_scanner/dialogs_help.py
+++ b/rtlsdr_scanner/dialogs_help.py
@@ -135,5 +135,5 @@ def __init__(self, parent):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_prefs.py b/rtlsdr_scanner/dialogs_prefs.py
index 6ab464e..5b264e8 100644
--- a/rtlsdr_scanner/dialogs_prefs.py
+++ b/rtlsdr_scanner/dialogs_prefs.py
@@ -136,7 +136,7 @@ def __plot(self, capture):
window=function(1024))
plot = []
- for x, y in itertools.izip(freqs, powers):
+ for x, y in zip(freqs, powers):
plot.append((x, y))
plot.sort()
x, y = numpy.transpose(plot)
@@ -215,16 +215,16 @@ def __init__(self, parent, settings):
self.checkBackup = wx.CheckBox(self, wx.ID_ANY,
"Backup")
self.checkBackup.SetValue(settings.backup)
- self.checkBackup.SetToolTipString('Backup data after crash')
+ self.checkBackup.SetToolTip('Backup data after crash')
self.checkAlert = wx.CheckBox(self, wx.ID_ANY,
"Level alert (dB)")
self.checkAlert.SetValue(settings.alert)
- self.checkAlert.SetToolTipString('Play alert when level exceeded')
+ self.checkAlert.SetToolTip('Play alert when level exceeded')
self.Bind(wx.EVT_CHECKBOX, self.__on_alert, self.checkAlert)
self.spinLevel = wx.SpinCtrl(self, wx.ID_ANY, min=-100, max=20)
self.spinLevel.SetValue(settings.alertLevel)
self.spinLevel.Enable(settings.alert)
- self.spinLevel.SetToolTipString('Alert threshold')
+ self.spinLevel.SetToolTip('Alert threshold')
textBackground = wx.StaticText(self, label='Background colour')
self.buttonBackground = wx.Button(self, wx.ID_ANY)
self.buttonBackground.SetBackgroundColour(self.background)
@@ -237,31 +237,31 @@ def __init__(self, parent, settings):
self.checkPoints = wx.CheckBox(self, wx.ID_ANY,
"Limit points")
self.checkPoints.SetValue(settings.pointsLimit)
- self.checkPoints.SetToolTipString('Limit the resolution of plots')
+ self.checkPoints.SetToolTip('Limit the resolution of plots')
self.Bind(wx.EVT_CHECKBOX, self.__on_points, self.checkPoints)
self.spinPoints = wx.SpinCtrl(self, wx.ID_ANY, min=1000, max=100000)
self.spinPoints.Enable(settings.pointsLimit)
self.spinPoints.SetValue(settings.pointsMax)
- self.spinPoints.SetToolTipString('Maximum number of points to plot_line')
+ self.spinPoints.SetToolTip('Maximum number of points to plot_line')
textDpi = wx.StaticText(self, label='Export DPI')
self.spinDpi = wx.SpinCtrl(self, wx.ID_ANY, min=72, max=6000)
self.spinDpi.SetValue(settings.exportDpi)
- self.spinDpi.SetToolTipString('DPI of exported images')
+ self.spinDpi.SetToolTip('DPI of exported images')
self.checkTune = wx.CheckBox(self, wx.ID_ANY,
"Tune SDR#")
self.checkTune.SetValue(settings.clickTune)
- self.checkTune.SetToolTipString('Double click plot_line to tune SDR#')
+ self.checkTune.SetToolTip('Double click plot_line to tune SDR#')
textPlugin = wx.HyperlinkCtrl(self, wx.ID_ANY,
label="(Requires plugin)",
url="http://eartoearoak.com/software/sdrsharp-net-remote")
self.radioAvg = wx.RadioButton(self, wx.ID_ANY, 'Average Scans',
style=wx.RB_GROUP)
- self.radioAvg.SetToolTipString('Average level with each scan')
+ self.radioAvg.SetToolTip('Average level with each scan')
self.Bind(wx.EVT_RADIOBUTTON, self.__on_radio, self.radioAvg)
self.radioRetain = wx.RadioButton(self, wx.ID_ANY,
'Retain previous scans')
- self.radioRetain.SetToolTipString('Can be slow')
+ self.radioRetain.SetToolTip('Can be slow')
self.Bind(wx.EVT_RADIOBUTTON, self.__on_radio, self.radioRetain)
self.radioRetain.SetValue(settings.retainScans)
@@ -269,7 +269,7 @@ def __init__(self, parent, settings):
self.spinCtrlMaxScans = wx.SpinCtrl(self)
self.spinCtrlMaxScans.SetRange(1, 5000)
self.spinCtrlMaxScans.SetValue(settings.retainMax)
- self.spinCtrlMaxScans.SetToolTipString('Maximum previous scans'
+ self.spinCtrlMaxScans.SetToolTip('Maximum previous scans'
' to display')
textWidth = wx.StaticText(self, label="Line width")
@@ -392,7 +392,7 @@ def __init__(self, parent, settings):
settings.overlap * 100,
0, 75,
style=wx.SL_LABELS)
- self.slideOverlap.SetToolTipString('Power spectral density'
+ self.slideOverlap.SetToolTip('Power spectral density'
' overlap')
textWindow = wx.StaticText(self, label='Window')
self.buttonWindow = wx.Button(self, wx.ID_ANY, self.winFunc)
@@ -442,12 +442,12 @@ def __init__(self, parent, settings):
textFreq = wx.StaticText(self, label='Frequency precision')
self.spinFreq = wx.SpinCtrl(self, wx.ID_ANY, min=0, max=6)
self.spinFreq.SetValue(settings.precisionFreq)
- self.spinFreq.SetToolTipString('Displayed frequency decimal precision')
+ self.spinFreq.SetToolTip('Displayed frequency decimal precision')
textLevel = wx.StaticText(self, label='Level precision')
self.spinLevel = wx.SpinCtrl(self, wx.ID_ANY, min=0, max=2)
self.spinLevel.SetValue(settings.precisionLevel)
- self.spinLevel.SetToolTipString('Displayed level decimal precision')
+ self.spinLevel.SetToolTip('Displayed level decimal precision')
sizerButtons = wx.StdDialogButtonSizer()
buttonOk = wx.Button(self, wx.ID_OK)
@@ -555,5 +555,5 @@ def get_win_func(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_scan.py b/rtlsdr_scanner/dialogs_scan.py
index 6f68ca4..a3e8ee4 100644
--- a/rtlsdr_scanner/dialogs_scan.py
+++ b/rtlsdr_scanner/dialogs_scan.py
@@ -59,5 +59,5 @@ def __on_ok(self, _event):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_toolbars.py b/rtlsdr_scanner/dialogs_toolbars.py
index a4fcbdb..5f2b4a8 100644
--- a/rtlsdr_scanner/dialogs_toolbars.py
+++ b/rtlsdr_scanner/dialogs_toolbars.py
@@ -110,5 +110,5 @@ def __on_ok(self, _event):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/dialogs_tools.py b/rtlsdr_scanner/dialogs_tools.py
index 5d3f998..2bd252a 100644
--- a/rtlsdr_scanner/dialogs_tools.py
+++ b/rtlsdr_scanner/dialogs_tools.py
@@ -23,7 +23,7 @@
# along with this program. If not, see .
#
-import Queue
+from six.moves import queue as Queue
import copy
import textwrap
@@ -431,14 +431,14 @@ def __init__(self, parent, log):
self.choiceFilter = wx.Choice(self,
choices=['All'] + self.log.TEXT_LEVEL)
self.choiceFilter.SetSelection(0)
- self.choiceFilter.SetToolTipString('Filter log level')
+ self.choiceFilter.SetToolTip('Filter log level')
self.Bind(wx.EVT_CHOICE, self.__on_filter, self.choiceFilter)
sizerFilter = wx.BoxSizer()
sizerFilter.Add(textFilter, flag=wx.ALL, border=5)
sizerFilter.Add(self.choiceFilter, flag=wx.ALL, border=5)
buttonRefresh = wx.Button(self, wx.ID_ANY, label='Refresh')
- buttonRefresh.SetToolTipString('Refresh the log')
+ buttonRefresh.SetToolTip('Refresh the log')
buttonClose = wx.Button(self, wx.ID_CLOSE)
self.Bind(wx.EVT_BUTTON, self.__on_refresh, buttonRefresh)
self.Bind(wx.EVT_BUTTON, self.__on_close, buttonClose)
@@ -509,5 +509,5 @@ def __update_grid(self, level=None):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/events.py b/rtlsdr_scanner/events.py
index 99372b2..7a163fd 100644
--- a/rtlsdr_scanner/events.py
+++ b/rtlsdr_scanner/events.py
@@ -23,7 +23,7 @@
# along with this program. If not, see .
#
-import Queue
+from six.moves import queue as Queue
import time
import wx
@@ -124,5 +124,5 @@ def post_event(destination, status):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/file.py b/rtlsdr_scanner/file.py
index 0228681..9aaeffe 100644
--- a/rtlsdr_scanner/file.py
+++ b/rtlsdr_scanner/file.py
@@ -23,7 +23,7 @@
# along with this program. If not, see .
#
-import cPickle
+from six.moves import cPickle
from collections import OrderedDict
import datetime
import glob
@@ -129,7 +129,7 @@ def get_type_filters(type=Types.PLOT):
filters = ''
length = len(types)
- for i in xrange(length):
+ for i in range(length):
filters += types[i]
if i < length - 1:
filters += '|'
@@ -142,7 +142,7 @@ def get_type_pretty(type):
pretty = ''
length = len(types)
- for i in xrange(length):
+ for i in range(length):
pretty += File.get_type_ext(i, type)
if i < length - 2:
pretty += ', '
@@ -154,7 +154,7 @@ def get_type_pretty(type):
@staticmethod
def get_type_index(extension, type=Types.PLOT):
exports = File.__get_types(type)
- for i in xrange(len(exports)):
+ for i in range(len(exports)):
if extension == File.get_type_ext(i, type):
return i
@@ -230,7 +230,7 @@ def __get(self):
os.remove(backup)
except:
pass
- files.sort(lambda x, y: cmp(x[1], y[1]), reverse=True)
+ files.sort(key=lambda x: x[1], reverse=True)
return files
@@ -340,18 +340,18 @@ def open_plot(dirname, filename):
lon = data[1]['Longitude']
if version < 7:
spectrum[1] = {}
- for f, p in data[1]['Spectrum'].iteritems():
+ for f, p in data[1]['Spectrum'].items():
spectrum[1][float(f)] = p
else:
- for t, s in data[1]['Spectrum'].iteritems():
+ for t, s in data[1]['Spectrum'].items():
spectrum[float(t)] = {}
- for f, p in s.iteritems():
+ for f, p in s.items():
spectrum[float(t)][float(f)] = p
if version > 7:
desc = data[1]['Description']
if version > 8:
location = {}
- for t, l in data[1]['Location'].iteritems():
+ for t, l in data[1]['Location'].items():
location[float(t)] = l
except ValueError:
@@ -469,8 +469,8 @@ def export_csv(handle, spectrum, header=True):
if header:
handle.write(u"Time (UTC), Frequency (MHz),Level (dB/Hz)\n")
if spectrum is not None:
- for plot in spectrum.iteritems():
- for freq, pwr in plot[1].iteritems():
+ for plot in spectrum.items():
+ for freq, pwr in plot[1].items():
handle.write("{}, {}, {}\n".format(plot[0], freq, pwr))
@@ -486,9 +486,9 @@ def export_plt(handle, spectrum):
handle.write('set hidden3d\n')
handle.write('set palette rgb 33,13,10\n')
handle.write('splot "-" using 1:2:3 notitle with lines \n')
- for plot in spectrum.iteritems():
+ for plot in spectrum.items():
handle.write('\n')
- for freq, pwr in plot[1].iteritems():
+ for freq, pwr in plot[1].items():
handle.write("{} {} {}\n".format(freq, plot[0], pwr))
@@ -660,5 +660,5 @@ def extension_add(fileName, index, fileType):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/location.py b/rtlsdr_scanner/location.py
index db52767..8f40fad 100644
--- a/rtlsdr_scanner/location.py
+++ b/rtlsdr_scanner/location.py
@@ -23,7 +23,7 @@
# along with this program. If not, see .
#
-from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+from six.moves.BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
import json
import mimetypes
import os
@@ -32,7 +32,7 @@
import threading
import time
import urllib
-from urlparse import urlparse
+from six.moves.urllib.parse import urlparse
import serial
from serial.serialutil import SerialException
@@ -414,8 +414,8 @@ def __create_lookat(self):
begin = format_iso_time(min(self.server.locations))
end = format_iso_time(max(self.server.locations))
- lat = [y for y, _x, _z in self.server.locations.itervalues()]
- lon = [x for _y, x, _z in self.server.locations.itervalues()]
+ lat = [y for y, _x, _z in self.server.locations.values()]
+ lon = [x for _y, x, _z in self.server.locations.values()]
latMin = min(lat)
latMax = max(lat)
lonMin = min(lon)
@@ -626,5 +626,5 @@ def cancel(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/main_window.py b/rtlsdr_scanner/main_window.py
index 035c9b3..5c955b9 100644
--- a/rtlsdr_scanner/main_window.py
+++ b/rtlsdr_scanner/main_window.py
@@ -23,12 +23,12 @@
# along with this program. If not, see .
#
-import Queue
+from six.moves import queue as Queue
from collections import OrderedDict
import math
import os.path
import tempfile
-import thread
+from six.moves import _thread as thread
from threading import Thread
import threading
import time
@@ -38,9 +38,9 @@
from wx.lib.agw import aui
from wx.lib.masked.numctrl import NumCtrl
-from location import ThreadLocation, LocationServer
-from menus import MenuMain, PopMenuMain
-from misc import RemoteControl, calc_samples, get_dwells, calc_real_dwell, \
+from rtlsdr_scanner.location import ThreadLocation, LocationServer
+from rtlsdr_scanner.menus import MenuMain, PopMenuMain
+from rtlsdr_scanner.misc import RemoteControl, calc_samples, get_dwells, calc_real_dwell, \
format_iso_time, limit
from rtlsdr_scanner.constants import F_MIN, F_MAX, MODE, NFFT, DISPLAY, Warn, \
Cal, Mode, APP_NAME, LOCATION_PORT
@@ -220,8 +220,8 @@ def __create_toolbars(self):
self.spinCtrlStart = wx.SpinCtrl(self.toolbar1)
self.spinCtrlStop = wx.SpinCtrl(self.toolbar1)
- self.spinCtrlStart.SetToolTipString('Start frequency')
- self.spinCtrlStop.SetToolTipString('Stop frequency')
+ self.spinCtrlStart.SetToolTip('Start frequency')
+ self.spinCtrlStop.SetToolTip('Stop frequency')
self.spinCtrlStart.SetRange(F_MIN, F_MAX - 1)
self.spinCtrlStop.SetRange(F_MIN + 1, F_MAX)
self.Bind(wx.EVT_SPINCTRL, self.__on_spin, self.spinCtrlStart)
@@ -250,21 +250,21 @@ def __create_toolbars(self):
textMode = wx.StaticText(self.toolbar2, label="Mode")
self.choiceMode = wx.Choice(self.toolbar2, choices=MODE[::2])
- self.choiceMode.SetToolTipString('Scanning mode')
+ self.choiceMode.SetToolTip('Scanning mode')
textDwell = wx.StaticText(self.toolbar2, label="Dwell")
self.choiceDwell = wx.Choice(self.toolbar2, choices=get_dwells()[::2])
- self.choiceDwell.SetToolTipString('Scan time per step')
+ self.choiceDwell.SetToolTip('Scan time per step')
textNfft = wx.StaticText(self.toolbar2, label="FFT size")
- self.choiceNfft = wx.Choice(self.toolbar2, choices=map(str, NFFT))
- self.choiceNfft.SetToolTipString('Higher values for greater'
+ self.choiceNfft = wx.Choice(self.toolbar2, choices=list(map(str, NFFT)))
+ self.choiceNfft.SetToolTip('Higher values for greater'
'precision')
textDisplay = wx.StaticText(self.toolbar2, label="Display")
self.choiceDisplay = wx.Choice(self.toolbar2, choices=DISPLAY[::2])
self.Bind(wx.EVT_CHOICE, self.__on_choice, self.choiceDisplay)
- self.choiceDisplay.SetToolTipString('Spectrogram available in'
+ self.choiceDisplay.SetToolTip('Spectrogram available in'
'continuous mode')
grid2 = wx.GridBagSizer(5, 5)
@@ -371,7 +371,7 @@ def __create_menu(self):
self.Bind(wx.EVT_MENU, self.__on_sys_info, self.menuMain.sys)
self.Bind(wx.EVT_MENU, self.__on_about, self.menuMain.about)
- idF1 = wx.wx.NewId()
+ idF1 = wx.NewId()
self.Bind(wx.EVT_MENU, self.__on_help, id=idF1)
accelTable = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_F1, idF1)])
self.SetAcceleratorTable(accelTable)
@@ -1021,7 +1021,7 @@ def __calc_ppm(self, freq):
timeStamp = max(self.spectrum)
spectrum = self.spectrum[timeStamp].copy()
- for x, y in spectrum.iteritems():
+ for x, y in spectrum.items():
spectrum[x] = (((x - freq) * (x - freq)) + 1) * y
peak = max(spectrum, key=spectrum.get)
@@ -1415,5 +1415,5 @@ def open(self, dirname, filename):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/menus.py b/rtlsdr_scanner/menus.py
index 6270cc6..2e758e6 100644
--- a/rtlsdr_scanner/menus.py
+++ b/rtlsdr_scanner/menus.py
@@ -42,7 +42,7 @@ def __init__(self, parent, settings):
recent = wx.Menu()
settings.fileHistory.UseMenu(recent)
settings.fileHistory.AddFilesToMenu()
- file.AppendMenu(wx.ID_ANY, "&Recent Files", recent)
+ file.Append(wx.ID_ANY, "&Recent Files", recent)
file.AppendSeparator()
self.save = file.Append(wx.ID_SAVE, "&Save As...",
"Save plot_line")
@@ -249,5 +249,5 @@ def set_state(self, state, spectrum):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/misc.py b/rtlsdr_scanner/misc.py
index adb2534..ab602ec 100644
--- a/rtlsdr_scanner/misc.py
+++ b/rtlsdr_scanner/misc.py
@@ -215,5 +215,5 @@ def limit_to_ascii(text):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/panels.py b/rtlsdr_scanner/panels.py
index 8da2bde..51e5174 100644
--- a/rtlsdr_scanner/panels.py
+++ b/rtlsdr_scanner/panels.py
@@ -696,7 +696,7 @@ def __init__(self, graph, settings):
self.grid.SetColSize(7, 1)
self.grid.SetColSize(11, 1)
self.grid.SetColSize(15, 1)
- self.grid.SetMargins(0, wx.SystemSettings_GetMetric(wx.SYS_HSCROLL_Y))
+ self.grid.SetMargins(0, wx.SystemSettings.GetMetric(wx.SYS_HSCROLL_Y))
for x in range(self.grid.GetNumberRows()):
self.grid.SetRowLabelValue(x, '')
@@ -760,17 +760,17 @@ def __init__(self, graph, settings):
dc.SetFont(font)
widthMHz = dc.GetTextExtent('###.######')[0] * 1.2
widthdB = dc.GetTextExtent('-##.##')[0] * 1.2
- for _desc, (_row, col) in self.locsDesc.iteritems():
+ for _desc, (_row, col) in self.locsDesc.items():
self.grid.AutoSizeColumn(col)
for col in [1, 5, 14, 18]:
self.grid.SetColSize(col, widthMHz)
- for row in xrange(self.grid.GetNumberRows()):
+ for row in range(self.grid.GetNumberRows()):
self.grid.SetCellFont(row, col, font)
for col in [6, 10]:
self.grid.SetColSize(col, widthdB)
- for row in xrange(self.grid.GetNumberRows()):
+ for row in range(self.grid.GetNumberRows()):
self.grid.SetCellFont(row, col, font)
- for _desc, (_row, col) in self.locsCheck.iteritems():
+ for _desc, (_row, col) in self.locsCheck.items():
self.grid.AutoSizeColumn(col)
toolTips = {}
@@ -814,12 +814,12 @@ def __set_descs(self):
font = self.grid.GetCellFont(0, 0)
font.SetWeight(wx.BOLD)
- for desc, (row, col) in self.locsDesc.iteritems():
+ for desc, (row, col) in self.locsDesc.items():
self.grid.SetCellValue(row, col, desc)
self.grid.SetCellFont(row, col, font)
def __set_check_editor(self):
- for _desc, (row, col) in self.locsCheck.iteritems():
+ for _desc, (row, col) in self.locsCheck.items():
self.grid.SetCellEditor(row, col, wxGrid.GridCellBoolEditor())
self.grid.SetCellAlignment(row, col, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
self.grid.SetCellRenderer(row, col, CheckBoxCellRenderer(self))
@@ -879,7 +879,7 @@ def __on_cell_click(self, event):
check = '1'
self.grid.SetCellValue(row, col, check)
- for control, (r, c) in self.locsCheck.iteritems():
+ for control, (r, c) in self.locsCheck.items():
if (r, c) == (row, col):
self.checked[control] = check
@@ -889,7 +889,7 @@ def __on_cell_click(self, event):
col = self.selected[1]
self.grid.SetGridCursor(row, col)
self.update_measure()
- elif (row, col) in self.locsMeasure.itervalues():
+ elif (row, col) in self.locsMeasure.values():
self.selected = (row, col)
self.grid.SetGridCursor(row, col)
elif self.selected is None:
@@ -1076,5 +1076,5 @@ def set_type(self, display):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_3d.py b/rtlsdr_scanner/plot_3d.py
index 0b0661b..fadfdce 100644
--- a/rtlsdr_scanner/plot_3d.py
+++ b/rtlsdr_scanner/plot_3d.py
@@ -294,5 +294,5 @@ def __clear_markers(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_controls.py b/rtlsdr_scanner/plot_controls.py
index a20b8e9..63dcb9e 100644
--- a/rtlsdr_scanner/plot_controls.py
+++ b/rtlsdr_scanner/plot_controls.py
@@ -212,5 +212,5 @@ def clear(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_line.py b/rtlsdr_scanner/plot_line.py
index fe6c051..dba01fc 100644
--- a/rtlsdr_scanner/plot_line.py
+++ b/rtlsdr_scanner/plot_line.py
@@ -130,7 +130,7 @@ def __setup_measure(self):
self.lines[Markers.OFS].set_path_effects([effect])
self.lines[Markers.OFE].set_path_effects([effect])
- for line in self.lines.itervalues():
+ for line in self.lines.values():
self.axes.add_line(line)
bbox = self.axes.bbox
@@ -170,7 +170,7 @@ def __setup_measure(self):
ha="center", va="top", bbox=box,
color='#996600')
- for label in self.labels.itervalues():
+ for label in self.labels.values():
self.axes.add_artist(label)
def __setup_overflow(self):
@@ -194,7 +194,7 @@ def __setup_overflow(self):
transform=self.axes.transAxes,
alpha=0.5)
- for label in self.overflowLabels.itervalues():
+ for label in self.overflowLabels.values():
self.axes.add_artist(label)
def __clear_overflow(self):
@@ -238,7 +238,7 @@ def __draw_vline(self, marker, x):
self.overflow['right'].append(marker)
def __draw_overflow(self):
- for pos, overflow in self.overflow.iteritems():
+ for pos, overflow in self.overflow.items():
if len(overflow) > 0:
text = ''
for measure in overflow:
@@ -298,11 +298,11 @@ def draw_measure(self, measure, show):
self.__draw_overflow()
def hide_measure(self):
- for line in self.lines.itervalues():
+ for line in self.lines.values():
line.set_visible(False)
- for label in self.labels.itervalues():
+ for label in self.labels.values():
label.set_visible(False)
- for label in self.overflowLabels.itervalues():
+ for label in self.overflowLabels.values():
label.set_visible(False)
def scale_plot(self, force=False):
@@ -411,6 +411,8 @@ def set_colourmap(self, colourMap):
pass
def close(self):
+ import ipdb
+ ipdb.set_trace()
self.figure.clear()
self.figure = None
@@ -665,7 +667,7 @@ def __create_segments(self, points):
levels = []
if len(points):
- prev = points[0]
+ prev = list(points)[0]
for point in points:
segment = [prev, point]
segments.append(segment)
@@ -706,5 +708,5 @@ def __clear_markers(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_preview.py b/rtlsdr_scanner/plot_preview.py
index a7cc89b..4db73e1 100644
--- a/rtlsdr_scanner/plot_preview.py
+++ b/rtlsdr_scanner/plot_preview.py
@@ -185,5 +185,5 @@ def to_front(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_spect.py b/rtlsdr_scanner/plot_spect.py
index 0df9551..16626e7 100644
--- a/rtlsdr_scanner/plot_spect.py
+++ b/rtlsdr_scanner/plot_spect.py
@@ -111,7 +111,7 @@ def __setup_measure(self):
self.lines[Markers.OFS].set_path_effects([effect])
self.lines[Markers.OFE].set_path_effects([effect])
- for line in self.lines.itervalues():
+ for line in self.lines.values():
self.axes.add_line(line)
bbox = self.axes.bbox
@@ -130,7 +130,7 @@ def __setup_measure(self):
ha="center", va="top", bbox=box,
color='#996600')
- for label in self.labels.itervalues():
+ for label in self.labels.values():
self.axes.add_artist(label)
def __setup_overflow(self):
@@ -146,7 +146,7 @@ def __setup_overflow(self):
transform=self.axes.transAxes,
alpha=0.5)
- for label in self.overflowLabels.itervalues():
+ for label in self.overflowLabels.values():
self.axes.add_artist(label)
def __clear_overflow(self):
@@ -172,7 +172,7 @@ def __draw_vline(self, marker, x):
self.overflow['right'].append(marker)
def __draw_overflow(self):
- for pos, overflow in self.overflow.iteritems():
+ for pos, overflow in self.overflow.items():
if len(overflow) > 0:
text = ''
for measure in overflow:
@@ -210,11 +210,11 @@ def draw_measure(self, measure, show):
self.__draw_overflow()
def hide_measure(self):
- for line in self.lines.itervalues():
+ for line in self.lines.values():
line.set_visible(False)
- for label in self.labels.itervalues():
+ for label in self.labels.values():
label.set_visible(False)
- for label in self.overflowLabels.itervalues():
+ for label in self.overflowLabels.values():
label.set_visible(False)
def scale_plot(self, force=False):
@@ -424,5 +424,5 @@ def __clear_markers(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_status.py b/rtlsdr_scanner/plot_status.py
index a19adb5..f8f156c 100644
--- a/rtlsdr_scanner/plot_status.py
+++ b/rtlsdr_scanner/plot_status.py
@@ -157,8 +157,8 @@ def run(self):
cols = len(text[0])
fontProperties = FontProperties()
fontProperties.set_weight('semibold')
- for row in xrange(rows):
- for col in xrange(cols):
+ for row in range(rows):
+ for col in range(cols):
fp = fontProperties if col == 0 else None
table.add_cell(row, col,
text=text[row][col],
@@ -181,5 +181,5 @@ def run(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/plot_time.py b/rtlsdr_scanner/plot_time.py
index eabaafc..a6f263b 100644
--- a/rtlsdr_scanner/plot_time.py
+++ b/rtlsdr_scanner/plot_time.py
@@ -156,5 +156,5 @@ def run(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/rtlsdr_scan_diag.py b/rtlsdr_scanner/rtlsdr_scan_diag.py
index 7aad71a..b1afa48 100644
--- a/rtlsdr_scanner/rtlsdr_scan_diag.py
+++ b/rtlsdr_scanner/rtlsdr_scan_diag.py
@@ -70,46 +70,46 @@ def find_rtlsdr_driver():
except:
pass
- print 'rtlsdr_scan_diag\n'
- print 'Tests for missing libraries\n'
+ print('rtlsdr_scan_diag\n')
+ print('Tests for missing libraries\n')
version = sys.version_info
if version < (2, 7):
- print 'Warning unsupported version, please use Python 2.7 or greater'
+ print('Warning unsupported version, please use Python 2.7 or greater')
problem = False
if not find_rtlsdr_driver():
- print 'rtlsdr driver not found in path'
- print "Download from 'http://sdr.osmocom.org/trac/wiki/rtl-sdr'"
- print ''
+ print('rtlsdr driver not found in path')
+ print("Download from 'http://sdr.osmocom.org/trac/wiki/rtl-sdr'")
+ print('')
else:
platform = sys.platform
for lib, name, url, package, ports in LIBS:
- print 'Testing for {}'.format(name)
+ print('Testing for {}'.format(name))
if not try_import(lib):
problem = True
- print '{} not found'.format(name)
+ print('{} not found'.format(name))
if platform == 'linux' or platform == 'linux2':
if package:
- print "\tInstall using the system package manager or download from '{}'".format(url)
+ print("\tInstall using the system package manager or download from '{}'".format(url))
else:
- print "\tDownload from '{}'".format(url)
+ print("\tDownload from '{}'".format(url))
elif platform == 'darwin':
if ports:
- print "\tInstall using MacPorts or download from '{}'".format(url)
+ print("\tInstall using MacPorts or download from '{}'".format(url))
else:
- print "\tDownload from '{}'".format(url)
+ print("\tDownload from '{}'".format(url))
else:
- print "\tDownload from '{}'".format(url)
+ print("\tDownload from '{}'".format(url))
- print ''
+ print('')
if problem:
- print '\nProblems found, please install the libraries for Python {}.{}'.format(version[0], version[1])
- print 'Further instructions can be found at http://eartoearoak.com/software/rtlsdr-scanner/rtlsdr-scanner-installation'
+ print('\nProblems found, please install the libraries for Python {}.{}'.format(version[0], version[1]))
+ print('Further instructions can be found at http://eartoearoak.com/software/rtlsdr-scanner/rtlsdr-scanner-installation')
else:
- print 'No problems found'
- print '\nUsing driver {}'.format(find_rtlsdr_driver())
+ print('No problems found')
+ print('\nUsing driver {}'.format(find_rtlsdr_driver()))
input('\nPress [Return]')
diff --git a/rtlsdr_scanner/rtltcp.py b/rtlsdr_scanner/rtltcp.py
index 38b291f..7ec4fbf 100644
--- a/rtlsdr_scanner/rtltcp.py
+++ b/rtlsdr_scanner/rtltcp.py
@@ -196,5 +196,5 @@ def abort(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/scan.py b/rtlsdr_scanner/scan.py
index 18dbf7d..ce457fd 100644
--- a/rtlsdr_scanner/scan.py
+++ b/rtlsdr_scanner/scan.py
@@ -180,7 +180,7 @@ def run(self):
NFFT=self.nfft,
Fs=SAMPLE_RATE / 1e6,
window=function(self.nfft))
- for freqPsd, pwr in itertools.izip(freqs, powers):
+ for freqPsd, pwr in zip(freqs, powers):
xr = freqPsd + (self.freq / 1e6)
xr = xr + (xr * self.cal / 1e6)
spectrum[xr] = pwr * self.levelOff
@@ -234,5 +234,5 @@ def update_spectrum(notify, lock, start, stop, data, offset,
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/settings.py b/rtlsdr_scanner/settings.py
index f9cef2e..4a2c283 100644
--- a/rtlsdr_scanner/settings.py
+++ b/rtlsdr_scanner/settings.py
@@ -23,7 +23,7 @@
# along with this program. If not, see .
#
-import ConfigParser
+from six.moves import configparser as ConfigParser
import wx
@@ -170,17 +170,17 @@ def __save_devices_rtl(self):
name = device.name
else:
name = "{}:{}".format(device.server, device.port)
- self.cfg.SetPath("/DevicesRTL/" + format_device_rtl_name(name))
- self.cfg.Write('serial', device.serial)
- self.cfg.WriteBool('isDevice', device.isDevice)
- self.cfg.Write('server', device.server)
- self.cfg.WriteInt('port', device.port)
- self.cfg.WriteFloat('gain', device.gain)
- self.cfg.WriteFloat('lo', device.lo)
- self.cfg.WriteFloat('calibration', device.calibration)
- self.cfg.WriteFloat('offset', device.offset)
- self.cfg.WriteInt('tuner', device.tuner)
- self.cfg.WriteFloat('levelOff', device.levelOff)
+ self.cfg.SetPath(b'/DevicesRTL/' + format_device_rtl_name(name))
+ self.cfg.Write(b'serial', device.serial)
+ self.cfg.WriteBool(b'isDevice', device.isDevice)
+ self.cfg.Write(b'server', device.server)
+ self.cfg.WriteInt(b'port', device.port)
+ self.cfg.WriteFloat(b'gain', device.gain)
+ self.cfg.WriteFloat(b'lo', device.lo)
+ self.cfg.WriteFloat(b'calibration', device.calibration)
+ self.cfg.WriteFloat(b'offset', device.offset)
+ self.cfg.WriteInt(b'tuner', device.tuner)
+ self.cfg.WriteFloat(b'levelOff', device.levelOff)
def __save_devices_gps(self):
self.cfg.DeleteGroup('/DevicesGPS')
@@ -378,5 +378,5 @@ def reset(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/spectrum.py b/rtlsdr_scanner/spectrum.py
index 56a4e2b..abffc1d 100644
--- a/rtlsdr_scanner/spectrum.py
+++ b/rtlsdr_scanner/spectrum.py
@@ -66,7 +66,7 @@ def __calc_extent(self, spectrum):
self.lMin = min(self.lMin, lMin)
if(lMax >= self.lMax):
self.lMax = lMax
- self.fPeak, self.lPeak = max(points, key=lambda(_f, l): l)
+ self.fPeak, self.lPeak = max(points, key=lambda l: l[1])
self.tPeak = timeStamp
def get_f(self):
@@ -216,7 +216,7 @@ def reduce_points(spectrum, limit):
for timeStamp in spectrum:
points = spectrum[timeStamp].items()
reduced = OrderedDict()
- for i in xrange(int(len(points) / ratio)):
+ for i in range(int(len(points) / ratio)):
point = points[int(i * ratio):int((i + 1) * ratio)][0]
reduced[point[0]] = point[1]
newSpectrum[timeStamp] = reduced
@@ -225,16 +225,16 @@ def reduce_points(spectrum, limit):
def split_spectrum(spectrum):
- freqs = spectrum.keys()
- powers = map(spectrum.get, freqs)
+ freqs = list(spectrum.keys())
+ powers = list(spectrum.values())
return freqs, powers
def split_spectrum_sort(spectrum):
- freqs = spectrum.keys()
+ freqs = list(spectrum.keys())
freqs.sort()
- powers = map(spectrum.get, freqs)
+ powers = list(map(spectrum.get, freqs))
return freqs, powers
@@ -255,7 +255,7 @@ def slice_spectrum(spectrum, start, end):
return None
sweepTemp = {}
- for f, p in sweep.iteritems():
+ for f, p in sweep.items():
if start <= f <= end:
sweepTemp[f] = p
return sorted(sweepTemp.items(), key=lambda t: t[0])
@@ -362,5 +362,5 @@ def get_peaks(spectrum, threshold):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/toolbars.py b/rtlsdr_scanner/toolbars.py
index 8c06456..5b03d5a 100644
--- a/rtlsdr_scanner/toolbars.py
+++ b/rtlsdr_scanner/toolbars.py
@@ -30,8 +30,9 @@
import matplotlib
from matplotlib.backend_bases import NavigationToolbar2
from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg
+
import wx
-from wx.animate import AnimationCtrl, Animation
+from wx.adv import AnimationCtrl, Animation
from rtlsdr_scanner.constants import Display, PlotFunc
from rtlsdr_scanner.dialogs_toolbars import DialogSmoothPrefs, DialogPeakThreshold
@@ -64,7 +65,7 @@ def __init__(self, parent, log):
style=wx.GA_HORIZONTAL | wx.GA_SMOOTH)
animation = Animation(get_resource('busy.gif'))
busy = AnimationCtrl(self, anim=animation)
- busy.SetToolTipString('Updating plot')
+ busy.SetToolTip('Updating plot')
self.controls[4] = busy
self.controls[3].Hide()
@@ -98,21 +99,21 @@ def __format_tooltip(self, text):
def set_general(self, text, level=Log.INFO):
text = self.TEXT_GENERAL + text
self.controls[0].SetLabel(text)
- self.controls[0].SetToolTipString(self.__format_tooltip(text))
+ self.controls[0].SetToolTip(self.__format_tooltip(text))
self.controls[0].Refresh()
self.log.add(text, level)
def set_info(self, text, level=Log.INFO):
text = self.TEXT_INFO + text
self.controls[1].SetLabel(text)
- self.controls[1].SetToolTipString(self.__format_tooltip(text))
+ self.controls[1].SetToolTip(self.__format_tooltip(text))
self.controls[1].Refresh()
self.log.add(text, level)
def set_gps(self, text, level=Log.INFO):
text = self.TEXT_GPS + text
self.controls[2].SetLabel(text)
- self.controls[2].SetToolTipString(self.__format_tooltip(text))
+ self.controls[2].SetToolTip(self.__format_tooltip(text))
self.controls[2].Refresh()
self.log.add(text, level)
@@ -144,14 +145,14 @@ def set_progress(self, progress):
text = '{:.1f}%\n{}'.format(progress, delta)
self.controls[3].SetValue(progress)
- self.controls[3].SetToolTipString(self.__format_tooltip(text))
+ self.controls[3].SetToolTip(self.__format_tooltip(text))
def show_progress(self):
self.controls[3].Show()
def hide_progress(self):
self.controls[3].Hide()
- self.controls[3].SetToolTipString('')
+ self.controls[3].SetToolTip('')
def set_busy(self, busy):
animCtrl = self.controls[4]
@@ -183,13 +184,13 @@ def __init__(self, canvas, panel, settings, callBackHideOverlay):
self.__add_spacer(False)
liveId = wx.NewId()
- self.AddCheckTool(liveId, load_bitmap('auto_refresh'),
+ self.AddCheckTool(liveId, "", load_bitmap('auto_refresh'),
shortHelp='Real time plotting\n(slow and buggy)')
self.ToggleTool(liveId, settings.liveUpdate)
wx.EVT_TOOL(self, liveId, self.__on_check_update)
gridId = wx.NewId()
- self.AddCheckTool(gridId, load_bitmap('grid'),
+ self.AddCheckTool(gridId, "", load_bitmap('grid'),
shortHelp='Toggle plot_line grid')
self.ToggleTool(gridId, settings.grid)
wx.EVT_TOOL(self, gridId, self.__on_check_grid)
@@ -246,47 +247,47 @@ def release_zoom(self, event):
self.clear_auto()
def __on_check_auto_f(self, event):
- self.settings.autoF = event.Checked()
+ self.settings.autoF = event.IsChecked()
self.panel.redraw_plot()
def __on_check_auto_l(self, event):
- self.settings.autoL = event.Checked()
+ self.settings.autoL = event.IsChecked()
self.panel.redraw_plot()
def __on_check_auto_t(self, event):
- self.settings.autoT = event.Checked()
+ self.settings.autoT = event.IsChecked()
self.panel.redraw_plot()
def __on_check_update(self, event):
- self.settings.liveUpdate = event.Checked()
+ self.settings.liveUpdate = event.IsChecked()
def __on_check_grid(self, event):
- grid = event.Checked()
+ grid = event.IsChecked()
self.settings.grid = grid
self.panel.set_grid(grid)
def __on_check_peak(self, event):
- peak = event.Checked()
+ peak = event.IsChecked()
self.settings.annotate = peak
self.panel.redraw_plot()
def __on_check_peaks(self, event):
- peaks = event.Checked()
+ peaks = event.IsChecked()
self.settings.peaks = peaks
self.panel.redraw_plot()
def __on_check_fade(self, event):
- fade = event.Checked()
+ fade = event.IsChecked()
self.settings.fadeScans = fade
self.panel.redraw_plot()
def __on_check_wire(self, event):
- wire = event.Checked()
+ wire = event.IsChecked()
self.settings.wireframe = wire
self.panel.create_plot()
def __on_check_avg(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.AVG
else:
@@ -295,7 +296,7 @@ def __on_check_avg(self, event):
self.panel.redraw_plot()
def __on_check_min(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.MIN
else:
@@ -304,7 +305,7 @@ def __on_check_min(self, event):
self.panel.redraw_plot()
def __on_check_max(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.MAX
else:
@@ -313,7 +314,7 @@ def __on_check_max(self, event):
self.panel.redraw_plot()
def __on_check_var(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.VAR
else:
@@ -322,7 +323,7 @@ def __on_check_var(self, event):
self.panel.redraw_plot()
def __on_check_smooth(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.SMOOTH
else:
@@ -331,7 +332,7 @@ def __on_check_smooth(self, event):
self.panel.redraw_plot()
def __on_check_diff(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.DIFF
else:
@@ -340,7 +341,7 @@ def __on_check_diff(self, event):
self.panel.redraw_plot()
def __on_check_delta(self, event):
- check = event.Checked()
+ check = event.IsChecked()
if check:
self.settings.plotFunc = PlotFunc.DELTA
else:
@@ -365,7 +366,7 @@ def __on_colour(self, event):
self.panel.redraw_plot()
def __on_colour_use(self, event):
- check = event.Checked()
+ check = event.IsChecked()
self.settings.colourMapUse = check
self.colourId.Enable(check)
self.plot.set_colourmap_use(check)
@@ -374,7 +375,7 @@ def __on_colour_use(self, event):
def __add_check_tool(self, bitmap, toolTip, callback, setting=None, toolId=None):
if toolId is None:
toolId = wx.NewId()
- self.AddCheckTool(toolId, load_bitmap(bitmap), shortHelp=toolTip)
+ self.AddCheckTool(toolId, "", load_bitmap(bitmap), shortHelp=toolTip)
wx.EVT_TOOL(self, toolId, callback)
if setting is not None:
self.ToggleTool(toolId, setting)
@@ -382,7 +383,7 @@ def __add_check_tool(self, bitmap, toolTip, callback, setting=None, toolId=None)
def __add_spacer(self, temp=True):
sepId = wx.NewId()
- self.AddCheckTool(sepId, load_bitmap('spacer'))
+ self.AddCheckTool(sepId, "", load_bitmap('spacer'))
self.EnableTool(sepId, False)
if temp:
self.extraTools.append(sepId)
@@ -597,13 +598,13 @@ def __init__(self, panel):
self.AddSeparator()
gridId = wx.NewId()
- self.AddCheckTool(gridId, load_bitmap('grid'),
+ self.AddCheckTool(gridId, "", load_bitmap('grid'),
shortHelp='Toggle grid')
self.ToggleTool(gridId, True)
wx.EVT_TOOL(self, gridId, self.__on_check_grid)
def __on_check_grid(self, event):
- grid = event.Checked()
+ grid = event.IsChecked()
self.panel.set_grid(grid)
def clear_auto(self):
@@ -611,5 +612,5 @@ def clear_auto(self):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/utils_google.py b/rtlsdr_scanner/utils_google.py
index beee956..b4590e2 100644
--- a/rtlsdr_scanner/utils_google.py
+++ b/rtlsdr_scanner/utils_google.py
@@ -42,5 +42,5 @@ def create_gearth(handle):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/utils_mpl.py b/rtlsdr_scanner/utils_mpl.py
index b7b8a0f..311f773 100644
--- a/rtlsdr_scanner/utils_mpl.py
+++ b/rtlsdr_scanner/utils_mpl.py
@@ -134,5 +134,5 @@ def create_heatmap(xs, ys, imageSize, blobSize, cmap):
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/utils_wx.py b/rtlsdr_scanner/utils_wx.py
index cb4702a..489f7dc 100644
--- a/rtlsdr_scanner/utils_wx.py
+++ b/rtlsdr_scanner/utils_wx.py
@@ -27,6 +27,7 @@
import wx
from rtlsdr_scanner.misc import get_resource
+from matplotlib.backends.backend_wx import _load_bitmap
class ValidatorCoord(wx.PyValidator):
@@ -74,7 +75,6 @@ def load_bitmap(name):
return wx.Bitmap(filename, wx.BITMAP_TYPE_PNG)
-
def load_icon(name):
filename = get_resource(name + '.png')
@@ -88,5 +88,5 @@ def close_modeless():
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/rtlsdr_scanner/widgets.py b/rtlsdr_scanner/widgets.py
index bd31e3d..5271595 100644
--- a/rtlsdr_scanner/widgets.py
+++ b/rtlsdr_scanner/widgets.py
@@ -26,15 +26,15 @@
from collections import OrderedDict
import wx
-from wx.grid import PyGridCellRenderer
+from wx.grid import GridCellRenderer
-class MultiButton(wx.PyControl):
+class MultiButton(wx.Control):
PADDING = 5
ARROW_SIZE = 6
def __init__(self, parent, options, tips=None, selected=0):
- wx.PyControl.__init__(self, parent=parent, size=wx.DefaultSize,
+ wx.Control.__init__(self, parent=parent, size=wx.DefaultSize,
style=wx.NO_BORDER)
self.options = options
self.tips = tips
@@ -104,7 +104,7 @@ def __show_menu(self):
def __set_text(self):
self.SetLabel(self.options[self.selected])
if self.tips is not None:
- self.SetToolTipString(self.tips[self.selected])
+ self.SetToolTip(self.tips[self.selected])
self.Refresh()
def __is_over_arrow(self, event):
@@ -188,14 +188,14 @@ def GetSelected(self):
return self.selected
-class Led(wx.PyControl):
+class Led(wx.Control):
PULSE_TIME = 250
def __init__(self, parent, id=wx.ID_ANY, label=''):
self.lit = False
self.colour = wx.GREEN
- wx.PyControl.__init__(self, parent=parent, id=id, size=wx.DefaultSize,
+ wx.Control.__init__(self, parent=parent, id=id, size=wx.DefaultSize,
style=wx.NO_BORDER)
self.SetLabel(label)
@@ -261,13 +261,13 @@ def pulse(self, colour=wx.GREEN):
self.timer.Start(self.PULSE_TIME)
-class SatLevel(wx.PyControl):
+class SatLevel(wx.Control):
BAR_WIDTH = 10
BAR_HEIGHT = 75
PADDING = 5
def __init__(self, parent, id=wx.ID_ANY, barCount=16):
- wx.PyControl.__init__(self, parent=parent, id=id, size=wx.DefaultSize,
+ wx.Control.__init__(self, parent=parent, id=id, size=wx.DefaultSize,
style=wx.NO_BORDER)
self.barCount = barCount
@@ -367,19 +367,19 @@ def clear_sats(self):
self.Refresh()
-class TickCellRenderer(PyGridCellRenderer):
+class TickCellRenderer(GridCellRenderer):
SIZE = 5
PADDING = 3
def __init__(self):
- PyGridCellRenderer.__init__(self)
+ GridCellRenderer.__init__(self)
def GetBestSize(self, _grid, _attr, _dc, _row, _col):
return wx.Size(self.SIZE + self.PADDING, self.SIZE + self.PADDING)
def Draw(self, grid, attr, dc, rect, row, col, _isSelected):
dc.SetBrush(wx.Brush(attr.GetBackgroundColour()))
- dc.DrawRectangleRect(rect)
+ dc.DrawRectangle(rect)
gc = wx.GraphicsContext.Create(dc)
gc.SetPen(wx.Pen(attr.GetTextColour()))
@@ -401,7 +401,7 @@ def Draw(self, grid, attr, dc, rect, row, col, _isSelected):
gc.StrokePath(pathTick)
-class CheckBoxCellRenderer(PyGridCellRenderer):
+class CheckBoxCellRenderer(GridCellRenderer):
SIZE = 8
def __init__(self, parent, showBox=True):
@@ -409,7 +409,7 @@ def __init__(self, parent, showBox=True):
self.showBox = showBox
self.enabled = True
- PyGridCellRenderer.__init__(self)
+ GridCellRenderer.__init__(self)
def GetBestSize(self, _grid, _attr, _dc, _row, _col):
return wx.Size(self.SIZE * 2, self.SIZE)
@@ -421,7 +421,7 @@ def Draw(self, grid, _attr, dc, rect, row, col, _isSelected):
if not self.enabled:
flags |= wx.CONTROL_DISABLED
- dc.DrawRectangleRect(rect)
+ dc.DrawRectangle(rect)
renderer = wx.RendererNative.Get()
renderer.DrawCheckBox(self.parent, dc, rect, flags)
@@ -453,9 +453,9 @@ def __on_motion(self, event):
else:
toolTip = ''
- self.grid.GetGridWindow().SetToolTipString(toolTip)
+ self.grid.GetGridWindow().SetToolTip(toolTip)
if __name__ == '__main__':
- print 'Please run rtlsdr_scan.py'
+ print('Please run rtlsdr_scan.py')
exit(1)
diff --git a/setup.py b/setup.py
index 6ff2ddd..4d78307 100644
--- a/setup.py
+++ b/setup.py
@@ -47,4 +47,4 @@
license='GPLv3',
packages=find_packages(),
package_data={'rtlsdr_scanner.res': ['*']},
- install_requires=['numpy', 'matplotlib', 'Pillow', 'pyrtlsdr', 'pyserial', 'visvis'])
+ install_requires=['numpy', 'matplotlib', 'Pillow', 'pyrtlsdr', 'pyserial', 'visvis', 'six'])