Пример #1
0
 def init_notebook(self):
     self.panel = wx.Panel(self)
     self.nb = wx.Notebook(self.panel)
     self.capture_panel = CapturePanel(self.nb, self.epoc_mgr)
     self.playback_panel = PlaybackPanel(self.nb, self.epoc_mgr)
     self.qual_panel = QualityPanel(self.nb, self.epoc_mgr)
     self.plot_panel = SensorPlotPanel(self.nb, self.epoc_mgr)
     self.fourier_panel = FourierPanel(self.nb, self.epoc_mgr)
     self.brain_wave_panel = BrainWavePanel(self.nb, self.epoc_mgr)
     self.nb.AddPage(self.capture_panel, "Capture")
     self.nb.AddPage(self.playback_panel, "Playback")
     self.nb.AddPage(self.qual_panel, "Sensor quality")
     self.nb.AddPage(self.plot_panel, "Plot")
     #        self.nb.AddPage(self.fft_panel, "Fourier")
     self.nb.AddPage(self.fourier_panel, "Fourier")
     self.nb.AddPage(self.brain_wave_panel, "Brain waves")
     sizer = wx.BoxSizer()
     sizer.Add(self.nb, 1, wx.EXPAND)
     self.panel.SetSizer(sizer)
Пример #2
0
    def init_notebook(self):
        self.panel = wx.Panel(self)
        self.nb = wx.Notebook(self.panel)
        self.capture_panel = CapturePanel(self.nb, self.epoc_mgr)
        self.playback_panel = PlaybackPanel(self.nb, self.epoc_mgr)
        self.qual_panel = QualityPanel(self.nb, self.epoc_mgr)
        self.plot_panel = SensorPlotPanel(self.nb, self.epoc_mgr)
        self.fourier_panel = FourierPanel(self.nb, self.epoc_mgr)
        self.brain_wave_panel = BrainWavePanel(self.nb, self.epoc_mgr)
        self.nb.AddPage(self.capture_panel, "Capture")
        self.nb.AddPage(self.playback_panel, "Playback")
        self.nb.AddPage(self.qual_panel, "Sensor quality")
        self.nb.AddPage(self.plot_panel, "Plot")
#        self.nb.AddPage(self.fft_panel, "Fourier")
        self.nb.AddPage(self.fourier_panel, "Fourier")
        self.nb.AddPage(self.brain_wave_panel, "Brain waves")
        sizer = wx.BoxSizer()
        sizer.Add(self.nb, 1, wx.EXPAND)
        self.panel.SetSizer(sizer)
Пример #3
0
class NervenFrame(wx.Frame):
    def __init__(self, parent, id, opts):
        wx.Frame.__init__(self, parent, MAIN_FRAME_ID, MAIN_TITLE)
        self.opts = opts
        self.cfg = NervenConfig(create=True)
        self.status_bar = self.CreateStatusBar(STATUS_FIELDS)
        self._create_menu()
        self._set_poll_timer()
        self._init_epoc()
        self.init_notebook()
        self.init_capture_controls()
        self.draw_counter = 1001
        self.Show(True)
        self.Maximize(True)
        if not self.have_epoc:
            dlg = wx.MessageDialog(self, "Cannot open EEG data stream at %s." % self.cfg['data_path'], "Error", wx.OK)
            dlg.ShowModal()
            dlg.Destroy()


    def _init_epoc(self):
        self.epoc_mgr = EpocManager(ZeroDevice())
        try:
            self.epoc_mgr.device = EpocDevice(self.cfg['data_path'])
            self.have_epoc = True
        except IOError:
            self.have_epoc = False

    def _set_poll_timer(self):
        self.timer = wx.Timer(self, POLL_TIMER_ID)
        self.timer.Start(POLL_FREQ)
        self.Bind(wx.EVT_TIMER, self.on_poll, self.timer)

    def init_capture_controls(self):
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        
    def init_notebook(self):
        self.panel = wx.Panel(self)
        self.nb = wx.Notebook(self.panel)
        self.capture_panel = CapturePanel(self.nb, self.epoc_mgr)
        self.playback_panel = PlaybackPanel(self.nb, self.epoc_mgr)
        self.qual_panel = QualityPanel(self.nb, self.epoc_mgr)
        self.plot_panel = SensorPlotPanel(self.nb, self.epoc_mgr)
        self.fourier_panel = FourierPanel(self.nb, self.epoc_mgr)
        self.brain_wave_panel = BrainWavePanel(self.nb, self.epoc_mgr)
        self.nb.AddPage(self.capture_panel, "Capture")
        self.nb.AddPage(self.playback_panel, "Playback")
        self.nb.AddPage(self.qual_panel, "Sensor quality")
        self.nb.AddPage(self.plot_panel, "Plot")
#        self.nb.AddPage(self.fft_panel, "Fourier")
        self.nb.AddPage(self.fourier_panel, "Fourier")
        self.nb.AddPage(self.brain_wave_panel, "Brain waves")
        sizer = wx.BoxSizer()
        sizer.Add(self.nb, 1, wx.EXPAND)
        self.panel.SetSizer(sizer)

    def _create_menu(self):
        bar = wx.MenuBar()
        bar.Append(self._create_menu_file(), "&File")
        bar.Append(self._create_menu_edit(), "&Edit")
        self.SetMenuBar(bar)

    def _create_menu_file(self):
        menu = wx.Menu()
        about = menu.Append(wx.ID_ABOUT, "&About", "About nerven")
        exit_ = menu.Append(wx.ID_EXIT, "E&xit", "Exit nerven")
        self.Bind(wx.EVT_MENU, self.on_exit, exit_)
        self.Bind(wx.EVT_MENU, self.on_about, about)
        return menu

    def _create_menu_edit(self):
        menu = wx.Menu()
        prefs = menu.Append(-1, "&Preferences", "Edit preferences")
        self.Bind(wx.EVT_MENU, self.on_prefs, prefs)
        return menu

    def update_status_bar(self):
        if self.draw_counter < PLOT_UPDATE_FREQ:
            self.draw_counter += 1 
            return
        self.draw_counter = 0
        fields = [
            'capture: %s' % (('on (%s)' % self.capture_panel.writer.running()) if self.capture_panel.capture_on else 'off'),
            'x: %d' % self.epoc_mgr.device.cur_pkt.gyro.x,
            'y: %d' % self.epoc_mgr.device.cur_pkt.gyro.y,
            'battery: %d%%' % self.epoc_mgr.device.battery,
            ]
        self.status_bar.SetFields(fields)

    def on_exit(self, e):
        self.Close(True)

    def on_about(self, e):
        dialog = wx.MessageDialog(self, ABOUT_TEXT, ABOUT_TITLE, wx.OK)
        dialog.ShowModal()
        dialog.Destroy()

    def on_prefs(self, e):
        page_idx = self.nb.GetPageCount()
        cur_page = self.nb.GetSelection()
        def delete_callback():
            self.nb.RemovePage(page_idx)
            self.nb.SetSelection(cur_page)
        pnl = PrefsPanel(self.nb, delete_callback)
        self.nb.AddPage(pnl, "Preferences", select=True)

    def on_poll(self, e):
        self.epoc_mgr.device.update()
        self.update_status_bar()
        if self.capture_panel.capture_on:
            self.capture_panel.write_packet()
        selection = self.nb.GetPage(self.nb.GetSelection())
        selection.do_update()
Пример #4
0
class NervenFrame(wx.Frame):
    def __init__(self, parent, id, opts):
        wx.Frame.__init__(self, parent, MAIN_FRAME_ID, MAIN_TITLE)
        self.opts = opts
        self.cfg = NervenConfig(create=True)
        self.status_bar = self.CreateStatusBar(STATUS_FIELDS)
        self._create_menu()
        self._set_poll_timer()
        self._init_epoc()
        self.init_notebook()
        self.init_capture_controls()
        self.draw_counter = 1001
        self.Show(True)
        self.Maximize(True)
        if not self.have_epoc:
            dlg = wx.MessageDialog(
                self,
                "Cannot open EEG data stream at %s." % self.cfg['data_path'],
                "Error", wx.OK)
            dlg.ShowModal()
            dlg.Destroy()

    def _init_epoc(self):
        self.epoc_mgr = EpocManager(ZeroDevice())
        try:
            self.epoc_mgr.device = EpocDevice(self.cfg['data_path'])
            self.have_epoc = True
        except IOError:
            self.have_epoc = False

    def _set_poll_timer(self):
        self.timer = wx.Timer(self, POLL_TIMER_ID)
        self.timer.Start(POLL_FREQ)
        self.Bind(wx.EVT_TIMER, self.on_poll, self.timer)

    def init_capture_controls(self):
        hbox = wx.BoxSizer(wx.HORIZONTAL)

    def init_notebook(self):
        self.panel = wx.Panel(self)
        self.nb = wx.Notebook(self.panel)
        self.capture_panel = CapturePanel(self.nb, self.epoc_mgr)
        self.playback_panel = PlaybackPanel(self.nb, self.epoc_mgr)
        self.qual_panel = QualityPanel(self.nb, self.epoc_mgr)
        self.plot_panel = SensorPlotPanel(self.nb, self.epoc_mgr)
        self.fourier_panel = FourierPanel(self.nb, self.epoc_mgr)
        self.brain_wave_panel = BrainWavePanel(self.nb, self.epoc_mgr)
        self.nb.AddPage(self.capture_panel, "Capture")
        self.nb.AddPage(self.playback_panel, "Playback")
        self.nb.AddPage(self.qual_panel, "Sensor quality")
        self.nb.AddPage(self.plot_panel, "Plot")
        #        self.nb.AddPage(self.fft_panel, "Fourier")
        self.nb.AddPage(self.fourier_panel, "Fourier")
        self.nb.AddPage(self.brain_wave_panel, "Brain waves")
        sizer = wx.BoxSizer()
        sizer.Add(self.nb, 1, wx.EXPAND)
        self.panel.SetSizer(sizer)

    def _create_menu(self):
        bar = wx.MenuBar()
        bar.Append(self._create_menu_file(), "&File")
        bar.Append(self._create_menu_edit(), "&Edit")
        self.SetMenuBar(bar)

    def _create_menu_file(self):
        menu = wx.Menu()
        about = menu.Append(wx.ID_ABOUT, "&About", "About nerven")
        exit_ = menu.Append(wx.ID_EXIT, "E&xit", "Exit nerven")
        self.Bind(wx.EVT_MENU, self.on_exit, exit_)
        self.Bind(wx.EVT_MENU, self.on_about, about)
        return menu

    def _create_menu_edit(self):
        menu = wx.Menu()
        prefs = menu.Append(-1, "&Preferences", "Edit preferences")
        self.Bind(wx.EVT_MENU, self.on_prefs, prefs)
        return menu

    def update_status_bar(self):
        if self.draw_counter < PLOT_UPDATE_FREQ:
            self.draw_counter += 1
            return
        self.draw_counter = 0
        fields = [
            'capture: %s' % (('on (%s)' % self.capture_panel.writer.running())
                             if self.capture_panel.capture_on else 'off'),
            'x: %d' % self.epoc_mgr.device.cur_pkt.gyro.x,
            'y: %d' % self.epoc_mgr.device.cur_pkt.gyro.y,
            'battery: %d%%' % self.epoc_mgr.device.battery,
        ]
        self.status_bar.SetFields(fields)

    def on_exit(self, e):
        self.Close(True)

    def on_about(self, e):
        dialog = wx.MessageDialog(self, ABOUT_TEXT, ABOUT_TITLE, wx.OK)
        dialog.ShowModal()
        dialog.Destroy()

    def on_prefs(self, e):
        page_idx = self.nb.GetPageCount()
        cur_page = self.nb.GetSelection()

        def delete_callback():
            self.nb.RemovePage(page_idx)
            self.nb.SetSelection(cur_page)

        pnl = PrefsPanel(self.nb, delete_callback)
        self.nb.AddPage(pnl, "Preferences", select=True)

    def on_poll(self, e):
        self.epoc_mgr.device.update()
        self.update_status_bar()
        if self.capture_panel.capture_on:
            self.capture_panel.write_packet()
        selection = self.nb.GetPage(self.nb.GetSelection())
        selection.do_update()