Пример #1
0
    def __init__(self, parent, gps):
        self._gps = gps

        pre = wx.PreDialog()
        self._ui = load_ui("DialogGps.xrc")
        self._ui.LoadOnDialog(pre, parent, "DialogGps")
        self.PostCreate(pre)

        self._checkEnable = xrc.XRCCTRL(pre, "checkEnable")
        self._choicePort = xrc.XRCCTRL(pre, "choicePort")
        self._choiceBaud = xrc.XRCCTRL(pre, "choiceBaud")
        self._buttonOk = xrc.XRCCTRL(pre, "wxID_OK")

        self._checkEnable.SetValue(gps.enabled)
        self._choicePort.AppendItems(gps.get_ports())
        port = self._choicePort.FindString(gps.port)
        if port == wx.NOT_FOUND:
            port = 0
        self._choicePort.SetSelection(port)
        self._choiceBaud.AppendItems(map(str, gps.get_bauds()))
        baud = self._choiceBaud.FindString(str(gps.baud))
        if baud == wx.NOT_FOUND:
            baud = 0
        self._choiceBaud.SetSelection(baud)

        self.Bind(wx.EVT_BUTTON, self.__on_ok, self._buttonOk)
Пример #2
0
    def __init__(self, parent):
        self._parent = parent
        self._toolbar = None
        self._timestamp = 0
        self._delayDraw = 1. / MAX_TIMELINE_FPS
        self._axes = None
        self._canvas = None
        self._monitors = None

        pre = wx.PreDialog()
        self._ui = load_ui('DialogTimeline.xrc')
        self._ui.LoadOnDialog(pre, parent, 'DialogTimeline')
        self.PostCreate(pre)

        self._panelPlot = xrc.XRCCTRL(pre, 'panelPlot')
        self._button_Close = xrc.XRCCTRL(pre, 'buttonClose')
        self.Bind(wx.EVT_BUTTON, self.__on_close, self._button_Close)

        self.Bind(wx.EVT_CLOSE, self.__on_close)

        self.__setup_plot()
        self._toolbar = NavigationToolbar(self._canvas, self)

        sizer = self._panelPlot.GetSizer()
        sizer.Add(self._canvas, 1, wx.ALL | wx.GROW)
        sizer.Add(self._toolbar, 0, wx.LEFT | wx.EXPAND)
        self.Fit()

        self._timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.__on_timer, self._timer)
Пример #3
0
    def __init__(self, parent):
        self._parent = parent
        self._spectrum = None
        self._toolbar = None
        self._textFreq = None
        self._timestamp = 0
        self._delayDraw = 1. / MAX_SPECTRUM_FPS
        self._axes = None
        self._canvas = None

        pre = wx.PreDialog()
        self._ui = load_ui('DialogSpectrum.xrc')
        self._ui.LoadOnDialog(pre, parent, 'DialogSpectrum')
        self.PostCreate(pre)

        self._panelPlot = xrc.XRCCTRL(pre, 'panelPlot')
        self._buttonClose = xrc.XRCCTRL(pre, 'buttonClose')
        self.Bind(wx.EVT_BUTTON, self.__on_close, self._buttonClose)

        self.Bind(wx.EVT_CLOSE, self.__on_close)

        self.__setup_plot()
        self.__setup_toolbar()

        sizer = self._panelPlot.GetSizer()
        sizer.Add(self._canvas, 1, wx.ALL | wx.GROW)
        sizer.Add(self._toolbar, 0, wx.LEFT | wx.EXPAND)
        self.Fit()
Пример #4
0
    def __init__(self, parent):
        pre = wx.PrePanel()
        self._ui = load_ui('PanelToolbar.xrc')

        handlerNumCtrl = XrcHandlerNumCtrl()
        self._ui.AddHandler(handlerNumCtrl)

        self._ui.LoadOnPanel(pre, parent, 'PanelToolbar')
        self.PostCreate(pre)

        self._numFreq = xrc.XRCCTRL(pre, 'ctrlFreq')
        self._choiceGain = xrc.XRCCTRL(pre, 'choiceGain')
        self._buttonStart = xrc.XRCCTRL(pre, 'buttonStart')
        self._buttonRec = xrc.XRCCTRL(pre, 'buttonRecord')
        self._buttonStop = xrc.XRCCTRL(pre, 'buttonStop')
        self._buttonAdd = xrc.XRCCTRL(pre, 'buttonAdd')

        self._numFreq.SetMin(1)
        self._numFreq.SetMax(9999)

        self._on_freq = None
        self._on_start = None
        self._on_rec = None
        self._on_stop = None
        self._on_add = None

        self.Bind(masked.EVT_NUM, self.__on_freq, self._numFreq)
        self.Bind(wx.EVT_BUTTON, self.__on_start, self._buttonStart)
        self.Bind(wx.EVT_TOGGLEBUTTON, self.__on_rec, self._buttonRec)
        self.Bind(wx.EVT_BUTTON, self.__on_stop, self._buttonStop)
        self.Bind(wx.EVT_BUTTON, self.__on_add, self._buttonAdd)
Пример #5
0
    def __init__(self, parent):
        pre = wx.PreDialog()
        self._ui = load_ui('DialogAbout.xrc')
        self._ui.LoadOnDialog(pre, parent, 'DialogAbout')
        self.PostCreate(pre)

        self._buttonOk = xrc.XRCCTRL(pre, 'buttonOk')
        self.Bind(wx.EVT_BUTTON, self.__on_ok, self._buttonOk)
Пример #6
0
    def __init__(self, parent):
        pre = wx.PreDialog()
        self._ui = load_ui('DialogAbout.xrc')
        self._ui.LoadOnDialog(pre, parent, 'DialogAbout')
        self.PostCreate(pre)

        bitmap = xrc.XRCCTRL(pre, 'bitmap')
        image = load_bitmap('logo.png', bitmap.GetClientSize())
        bitmap.SetBitmap(image)

        self._buttonOk = xrc.XRCCTRL(pre, 'buttonOk')
        self.Bind(wx.EVT_BUTTON, self.__on_ok, self._buttonOk)
Пример #7
0
    def __init__(self, parent, settings):
        self._settings = settings

        pre = wx.PreDialog()
        self._ui = load_ui('DialogPush.xrc')
        self._ui.LoadOnDialog(pre, parent, 'DialogPush')
        self.PostCreate(pre)

        self._checkEnable = xrc.XRCCTRL(pre, 'checkEnable')
        self._editUri = xrc.XRCCTRL(pre, 'editUri')
        self._buttonOk = xrc.XRCCTRL(pre, 'wxID_OK')

        self._checkEnable.SetValue(settings.get_push_enable())
        self._editUri.SetValue(settings.get_push_uri())

        self.Bind(wx.EVT_BUTTON, self.__on_ok, self._buttonOk)
Пример #8
0
    def __init__(self, parent, eventHandler):
        Monitor.__init__(self, None, False, False, None, None, False, [], [])

        self._eventHandler = eventHandler
        self._isRecording = False
        self._isRunning = False
        self._isLow = True
        self._colours = []

        pre = wx.PrePanel()
        self._ui = load_ui('PanelMonitor.xrc')

        handlerNumCtrl = XrcHandlerNumCtrl()
        handlerMeter = XrcHandlerMeter()
        self._ui.AddHandler(handlerNumCtrl)
        self._ui.AddHandler(handlerMeter)

        self._ui.LoadOnPanel(pre, parent, 'PanelMonitor')
        self.PostCreate(pre)

        self._panelColour = xrc.XRCCTRL(pre, 'panelColour')
        self._checkEnable = xrc.XRCCTRL(pre, 'checkEnable')
        self._checkAlert = xrc.XRCCTRL(pre, 'checkAlert')
        self._checkDynamic = xrc.XRCCTRL(pre, 'checkDynamic')
        self._choiceFreq = xrc.XRCCTRL(pre, 'choiceFreq')
        self._textSignals = xrc.XRCCTRL(pre, 'textSignals')
        # TODO: hackish
        for child in self.GetChildren():
            if isinstance(child, WidgetMeter):
                self._meterLevel = child
        self._sliderThreshold = xrc.XRCCTRL(pre, 'sliderThreshold')
        self._buttonDel = xrc.XRCCTRL(pre, 'buttonDel')

        self.__set_records()

        self._on_del = None

        self._panelColour.Bind(wx.EVT_LEFT_UP, self.__on_colour)
        self.Bind(wx.EVT_CHECKBOX, self.__on_enable, self._checkEnable)
        self.Bind(wx.EVT_CHECKBOX, self.__on_alert, self._checkAlert)
        self.Bind(wx.EVT_CHECKBOX, self.__on_dynamic, self._checkDynamic)
        self.Bind(wx.EVT_CHOICE, self.__on_freq, self._choiceFreq)
        self.Bind(wx.EVT_SLIDER, self.__on_threshold, self._sliderThreshold)
        self.Bind(wx.EVT_BUTTON, self.__on_del, self._buttonDel)
Пример #9
0
    def __init__(self, parent):
        self._parent = parent
        self._isRecording = False
        self._isSaved = True
        self._timestamp = None
        self._signals = []
        levelsLength = MAX_LEVELS_TIME * SAMPLE_RATE / SAMPLES
        self._levels = collections.deque(maxlen=round(levelsLength))

        pre = wx.PrePanel()
        self._ui = load_ui('PanelMonitor.xrc')

        handlerNumCtrl = XrcHandlerNumCtrl()
        handlerMeter = XrcHandlerMeter()
        self._ui.AddHandler(handlerNumCtrl)
        self._ui.AddHandler(handlerMeter)

        self._ui.LoadOnPanel(pre, parent, 'PanelMonitor')
        self.PostCreate(pre)

        self._checkEnable = xrc.XRCCTRL(pre, 'checkEnable')
        self._choiceFreq = xrc.XRCCTRL(pre, 'choiceFreq')
        self._textSignals = xrc.XRCCTRL(pre, 'textSignals')
        # TODO: hackish
        for child in self.GetChildren():
            if child.Name == 'panel':
                self._meterLevel = child
        self._sliderThreshold = xrc.XRCCTRL(pre, 'sliderThreshold')
        self._buttonDel = xrc.XRCCTRL(pre, 'buttonDel')

        self._sliderThreshold.SetMin(LEVEL_MIN)
        self._sliderThreshold.SetMax(LEVEL_MAX)
        self._meterLevel.set_threshold(self._sliderThreshold.GetValue())

        self.__set_signals()

        self._on_del = None

        self.Bind(wx.EVT_CHOICE, self.__on_freq, self._choiceFreq)
        self.Bind(wx.EVT_SLIDER, self.__on_threshold, self._sliderThreshold)
        self.Bind(wx.EVT_CHECKBOX, self.__on_enable, self._checkEnable)
        self.Bind(wx.EVT_BUTTON, self.__on_del, self._buttonDel)
Пример #10
0
    def __init__(self):
        self._monitors = []
        self._freqs = []
        self._levels = numpy.zeros(BINS, dtype=numpy.float32)
        self._settings = Settings()
        self._filename = None
        self._receive = None
        self._dialogTimeline = None
        self._dialogSpectrum = None
        self._gps = None
        self._location = None

        self._ui = load_ui('FrameMain.xrc')

        handlerToolbar = XrcHandlerToolbar()
        self._ui.AddHandler(handlerToolbar)

        self._frame = self._ui.LoadFrame(None, 'FrameMain')
        self.__set_title()

        self._window = xrc.XRCCTRL(self._frame, 'window')
        self._status = xrc.XRCCTRL(self._frame, 'statusBar')
        self._toolbar = xrc.XRCCTRL(self._frame, 'PanelToolbar')

        self._sizerWindow = self._window.GetSizer()

        sdr = RtlSdr()
        gains = sdr.get_gains()
        gains = [float(gain) / 10. for gain in gains]
        sdr.close()

        self._toolbar.set_callbacks(self.__on_freq,
                                    self.__on_start,
                                    self.__on_rec,
                                    self.__on_stop,
                                    self.__on_add)
        self._toolbar.enable_start(True)
        self._toolbar.set_freq(self._settings.get_freq())
        self._toolbar.set_gains(gains)
        self._toolbar.set_gain(self._settings.get_gain())

        self.__add_monitors()

        self._server = Server(self._frame)

        self.__start_gps()

        self._menu = self._frame.GetMenuBar()

        idOpen = xrc.XRCID('menuOpen')
        self._menuOpen = self._menu.FindItemById(idOpen)
        self._frame.Bind(wx.EVT_MENU, self.__on_open, id=idOpen)
        idSave = xrc.XRCID('menuSave')
        self._menuSave = self._menu.FindItemById(idSave)
        self._frame.Bind(wx.EVT_MENU, self.__on_save, id=idSave)
        idSaveAs = xrc.XRCID('menuSaveAs')
        self._menuSaveAs = self._menu.FindItemById(idSaveAs)
        self._frame.Bind(wx.EVT_MENU, self.__on_save_as, id=idSaveAs)
        idClear = xrc.XRCID('menuClear')
        self._menuClear = self._menu.FindItemById(idClear)
        self._frame.Bind(wx.EVT_MENU, self.__on_clear, id=idClear)
        idGps = xrc.XRCID('menuGps')
        self._menuGps = self._menu.FindItemById(idGps)
        self._frame.Bind(wx.EVT_MENU, self.__on_gps, id=idGps)
        idTimeline = xrc.XRCID('menuTimeline')
        self._frame.Bind(wx.EVT_MENU, self.__on_timeline, id=idTimeline)
        self._menuTimeline = self._menu.FindItemById(idTimeline)
        idSpectrum = xrc.XRCID('menuSpectrum')
        self._frame.Bind(wx.EVT_MENU, self.__on_spectrum, id=idSpectrum)
        self._menuSpectrum = self._menu.FindItemById(idSpectrum)
        idExit = xrc.XRCID('menuExit')
        self._menuExit = self._menu.FindItemById(idExit)
        self._frame.Bind(wx.EVT_MENU, self.__on_exit, id=idExit)
        idAbout = xrc.XRCID('menuAbout')
        self._frame.Bind(wx.EVT_MENU, self.__on_about, id=idAbout)

        self._frame.Bind(EVT_TIMELINE_CLOSE, self.__on_timeline_close)
        self._frame.Bind(EVT_SPECTRUM_CLOSE, self.__on_spectrum_close)

        self._frame.Bind(wx.EVT_CLOSE, self.__on_exit)

        self._frame.Connect(-1, -1, EVENT_THREAD, self.__on_event)

        self._frame.Show()
Пример #11
0
    def __init__(self):
        wx.Frame.__init__(self, None)
        self._monitors = []
        self._freqs = []
        self._levels = numpy.zeros(BINS, dtype=numpy.float32)
        self._settings = Settings()
        self._filename = None
        self._receive = None
        self._dialogTimeline = None
        self._dialogSpectrum = None
        self._gps = None
        self._location = None
        self._isSaved = True
        self._warnedPush = False

        cmap = cm.get_cmap('Set1')
        self._colours = [cmap(float(i) / COLOURS) for i in range(COLOURS)]

        self._ui = load_ui('FrameMain.xrc')

        self._menu = self._ui.LoadMenuBar('menuBar')
        self._panelMonitors = self._ui.LoadObject(self, 'scrolled', 'wxScrolledWindow')
        self._status = self._ui.LoadObject(self, 'statusBar', 'wxStatusBar')
        self._sizerMonitors = self._panelMonitors.GetSizer()
        self._toolbar = Toolbar(self)

        self.SetMenuBar(self._menu)
        self.SetStatusBar(self._status)

        self._mgr = aui.AuiManager(self)
        self._mgr.AddPane(self._panelMonitors, aui.AuiPaneInfo().
                          Centre().
                          CentrePane())
        self._mgr.AddPane(self._toolbar, aui.AuiPaneInfo().
                          Bottom().
                          ToolbarPane().
                          LeftDockable(False).
                          RightDockable(False).
                          NotebookDockable(False).
                          MinSize(self._toolbar.GetMinSize()))
        self._mgr.Update()

        width = self._toolbar.GetBestSize().GetWidth()
        self.SetSize((width, -1))
        self.SetMinSize((width, 300))

        self.__set_icon()

        try:
            sdr = RtlSdr()
            gains = sdr.get_gains()
            gains = [float(gain) / 10. for gain in gains]
            sdr.close()
        except IOError:
            wx.MessageBox('No radio found', APP_NAME, wx.OK | wx.ICON_ERROR)
            exit(1)

        self._toolbar.set_callbacks(self.__on_freq,
                                    self.__on_start,
                                    self.__on_rec,
                                    self.__on_stop,
                                    self.__on_add)
        self._toolbar.enable_start(True)
        self._toolbar.set_freq(self._settings.get_freq())
        self._toolbar.set_gains(gains)
        self._toolbar.set_gain(self._settings.get_gain())
        self._toolbar.set_cal(self._settings.get_cal())
        self._toolbar.set_dynamic_percentile(self._settings.
                                             get_dynamic_percentile())

        self.__on_freq(self._settings.get_freq())

        self._push = Push(self)
        self._server = Server(self)

        self.__start_gps()

        idOpen = xrc.XRCID('menuOpen')
        self._menuOpen = self._menu.FindItemById(idOpen)
        self.Bind(wx.EVT_MENU, self.__on_open, id=idOpen)
        idSave = xrc.XRCID('menuSave')
        self._menuSave = self._menu.FindItemById(idSave)
        self.Bind(wx.EVT_MENU, self.__on_save, id=idSave)
        idSaveAs = xrc.XRCID('menuSaveAs')
        self.Bind(wx.EVT_MENU, self.__on_save_as, id=idSaveAs)
        idClear = xrc.XRCID('menuClear')
        self._menuClear = self._menu.FindItemById(idClear)
        self.Bind(wx.EVT_MENU, self.__on_clear, id=idClear)
        idGps = xrc.XRCID('menuGps')
        self._menuGps = self._menu.FindItemById(idGps)
        self.Bind(wx.EVT_MENU, self.__on_gps, id=idGps)
        idTimeline = xrc.XRCID('menuTimeline')
        self.Bind(wx.EVT_MENU, self.__on_timeline, id=idTimeline)
        self._menuTimeline = self._menu.FindItemById(idTimeline)
        idSpectrum = xrc.XRCID('menuSpectrum')
        self.Bind(wx.EVT_MENU, self.__on_spectrum, id=idSpectrum)
        self._menuSpectrum = self._menu.FindItemById(idSpectrum)
        idExit = xrc.XRCID('menuExit')
        self._menuExit = self._menu.FindItemById(idExit)
        self.Bind(wx.EVT_MENU, self.__on_exit, id=idExit)
        idPush = xrc.XRCID('menuPush')
        self.Bind(wx.EVT_MENU, self.__on_push, id=idPush)
        idAbout = xrc.XRCID('menuAbout')
        self.Bind(wx.EVT_MENU, self.__on_about, id=idAbout)

        self._alert = load_sound('alert.wav')
        self._alertLast = 0

        self.__set_title()
        self.__enable_controls(True)

        self.Bind(EVT_TIMELINE_CLOSE, self.__on_timeline_close)
        self.Bind(EVT_SPECTRUM_CLOSE, self.__on_spectrum_close)

        self.Bind(wx.EVT_CLOSE, self.__on_exit)

        self.Connect(-1, -1, EVENT_THREAD, self.__on_event)

        self.Show()

        self.__clear_levels()