Beispiel #1
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.colony = None

        self.shipslider = wx.Slider(self, SHIPSLIDER_ID)
        self.defenceslider = wx.Slider(self, DEFENCESLIDER_ID)
        self.factoryslider = wx.Slider(self, FACTORYSLIDER_ID)
        self.colonyslider = wx.Slider(self, COLONYSLIDER_ID)

        self.shipslider.SetRange(0, 100)
        self.defenceslider.SetRange(0, 100)
        self.factoryslider.SetRange(0, 100)
        self.colonyslider.SetRange(0, 100)

        self.shiptoggle = wx.CheckBox(self, SHIPTOGGLE_ID, "Ship")
        self.defencetoggle = wx.CheckBox(self, DEFENCETOGGLE_ID, "Def")
        self.factorytoggle = wx.CheckBox(self, FACTORYTOGGLE_ID, "Fact")
        self.colonytoggle = wx.CheckBox(self, COLONYTOGGLE_ID, "Col")

        fgsizer = wx.FlexGridSizer(4, 2, 0, 0)
        fgsizer.AddGrowableCol(1, 1)
        fgsizer.AddGrowableCol(2, 10)

        fgsizer.Add(self.shiptoggle, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.shipslider, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.defencetoggle, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.defenceslider, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.factorytoggle, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.factoryslider, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.colonytoggle, flag=wx.EXPAND | wx.ALL, border=1)
        fgsizer.Add(self.colonyslider, flag=wx.EXPAND | wx.ALL, border=1)
        self.SetSizer(fgsizer)

        wx.EVT_SLIDER(self, SHIPSLIDER_ID, self.setShipSlider)
        wx.EVT_SLIDER(self, DEFENCESLIDER_ID, self.setDefenceSlider)
        wx.EVT_SLIDER(self, FACTORYSLIDER_ID, self.setFactorySlider)
        wx.EVT_SLIDER(self, COLONYSLIDER_ID, self.setColonySlider)

        wx.EVT_CHECKBOX(self, SHIPTOGGLE_ID, self.lockShipSlider)
        wx.EVT_CHECKBOX(self, DEFENCETOGGLE_ID, self.lockDefenceSlider)
        wx.EVT_CHECKBOX(self, FACTORYTOGGLE_ID, self.lockFactorySlider)
        wx.EVT_CHECKBOX(self, COLONYTOGGLE_ID, self.lockColonySlider)
Beispiel #2
0
	def SetUpComponentSliders (self):
		id = 200
		self.sliders = []
		
		self.sizer3=wx.BoxSizer(wx.HORIZONTAL)
		# add a slider to each PC
		for i in range (self.tracks.pcs.num_pcs) :
			self.sliders.append(wx.Slider(self, id + i, 0, 0, 100) )
			wx.EVT_SLIDER (self, id + i, lambda e, ind = i : self.tracks.setPCWeight(ind, self.sliders[ind].GetValue()/100.0))
			self.sizer3.Add(self.sliders[i],1)
		self.sizer2.Add(self.sizer3)
		self.sizer2.Fit(self)
Beispiel #3
0
    def putZSlidersIntoTopBox(self, parent, boxSizer, skipAxes=[]):
        [si.GetWindow().Destroy()
         for si in boxSizer.GetChildren()]  # needed with Y.viewInViewer

        if type(skipAxes) is type(1):
            skipAxes = [skipAxes]

        self.zzslider = [None] * self.zndim
        for i in range(self.zndim - 1, -1, -1):
            if i in skipAxes:
                continue
            self.zzslider[i] = wx.Slider(
                parent,
                1001 + i,
                self.zsec[i],
                0,
                self.zshape[i] - 1,
                wx.DefaultPosition,
                wx.DefaultSize,
                #wx.SL_VERTICAL
                wx.SL_HORIZONTAL
                | wx.SL_AUTOTICKS | wx.SL_LABELS)
            if self.zshape[i] > 1:
                self.zzslider[i].SetTickFreq(5, 1)
                ##boxSizer.Add(vslider, 1, wx.EXPAND)
                boxSizer.Insert(0, self.zzslider[i], 1, wx.EXPAND)
                wx.EVT_SLIDER(parent, self.zzslider[i].GetId(),
                              self.OnZZSlider)
            else:  # still good to create the slider - just to no have special handling
                # self.zzslider[i].Show(0) #
                boxSizer.Insert(0, self.zzslider[i], 0, 0)

            self.zzslider[i].Bind(wx.EVT_RIGHT_DOWN,
                                  self.onPixelValInfoLabelRightClick)

        if self.zndim == 0:
            label = wx.StaticText(parent, -1, "")
            #label.SetHelpText("This is the help text for the label")
            boxSizer.Add(label, 0, wx.GROW | wx.ALL, 2)

        self.label = wx.StaticText(
            parent, -1, "----move mouse over image----"
        )  # HACK find better way to reserve space to have "val: 1234" always visible
        self.label.Bind(wx.EVT_RIGHT_DOWN, self.onPixelValInfoLabelRightClick)

        boxSizer.Add(self.label, 0, wx.GROW | wx.ALL, 2)
        boxSizer.Layout()
        parent.Layout()
Beispiel #4
0
    def __init__(self,
                 parent,
                 id,
                 title,
                 pos=wx.DefaultPosition,
                 size=wx.DefaultSize,
                 style=wx.DEFAULT_DIALOG_STYLE):
        wx.Dialog.__init__(self, parent, id, title, pos, size, style)

        # WDR: dialog function MyDialogFunc for MyDialog
        MyDialogFunc(self, True)

        self.CentreOnParent()

        # WDR: handler declarations for MyDialog
        wx.EVT_SLIDER(self, ID_SLIDER, self.OnSlider)
Beispiel #5
0
    def __init__(self, nz, title=""):
        wx.Frame.__init__(self, None, -1, title)  # , size=wx.Size(240,250))

        self.sizer = wx.BoxSizer(wx.VERTICAL)

        #20080707 doOnXXXX event handler are now lists of functions
        self.doOnZchange = []  # (zSec, ev)

        zmax = nz - 1
        self.lastZ = -1
        self.zslider = wx.Slider(
            self,
            1001,
            0,
            0,
            zmax,
            wx.DefaultPosition,
            wx.DefaultSize,
            #wx.SL_VERTICAL
            wx.SL_HORIZONTAL
            | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.zslider.SetTickFreq(5, 1)

        self.sizer.Add(self.zslider, 1, wx.EXPAND)
        #         panel = wx.Panel(self, -1)

        #         button = wx.Button(panel, 1003, "Close Me")
        #         button.SetPosition(wx.Point(15, 15))
        #         self.button = button
        #         EVT_BUTTON(self, 1003, self.OnCloseMe)
        #wx.EVT_SCROLL_THUMBRELEASE(self, self.OnSlider)
        wx.EVT_SLIDER(self, self.zslider.GetId(), self.OnSlider)
        wx.EVT_CLOSE(self, self.OnCloseWindow)
        #         self.name = 'bubba'

        #     def OnCloseMe(self, event):
        #         print 'hit'
        #         self.Close(True)
        self.sizer.Fit(self)

        self.SetAutoLayout(True)
        self.SetSizer(self.sizer)

        self.zslider.SetBackgroundColour(wx.LIGHT_GREY)
        self.SetBackgroundColour(wx.LIGHT_GREY)

        self.Show()
Beispiel #6
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.slider_1 = wx.Slider(self, ID_SLIDER_1, 25, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_2 = wx.Slider(self, ID_SLIDER_2, 35, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_3 = wx.Slider(self, ID_SLIDER_3, 55, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_4 = wx.Slider(self, ID_SLIDER_4, 40, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_5 = wx.Slider(self, ID_SLIDER_5, 77, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_6 = wx.Slider(self, ID_SLIDER_6, 40, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_7 = wx.Slider(self, ID_SLIDER_7, 10, 0, 100, style=wx.SL_VERTICAL | wx.SL_LABELS)

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

	wx.EVT_SLIDER(self, ID_SLIDER_1, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_2, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_3, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_4, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_5, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_6, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_7, self.update)

	self.g = Gnuplot.Gnuplot()
	self.g('set xrange [-30:30]')
	self.g('set yrange [-30:30]')
	self.g('set style data dots')
	# do first plot
        xyz = []
        t = 0.5 * 2 * math.pi
        a = self.slider_1.GetValue() / 100. * 2
        b = self.slider_2.GetValue() / 100. * 2
        c = self.slider_3.GetValue() / 100. * 4
        d = self.slider_4.GetValue() / 100. * 2
        e = self.slider_5.GetValue() / 100. * 2
	f = self.slider_6.GetValue() / 100. * 20
	g = self.slider_7.GetValue() / 100. * 5
        while (t < 2.5 * 2 * math.pi):
            x = a*t*math.sin(c*t**d) + b*math.sin(f*t**e)
            y = a*t*math.cos(c*t**d) + b*math.cos(f*t**e)
            z = math.sin(g*t)
            xyz.append([x,y,z])
            t += 4*math.pi / 5000.
        self.g.splot(xyz)
 def __init__(self, parent):
     wx.Panel.__init__(self, parent, -1)
     # Create a button to send a note to Csound.
     self.ID_BUTTON1 = 10
     self.button1 = wx.Button(self, self.ID_BUTTON1, "Send Note", (20, 20))
     # Bind the button to its event handler.
     wx.EVT_BUTTON(self, self.ID_BUTTON1, self.OnClickButton1)
     # Create a slider to change the pitch of the note.
     self.ID_SLIDER1 = 20
     self.slider1 = wx.Slider(self, self.ID_SLIDER1, 63, 0, 127, (20, 50),
                              (200, 50), wx.SL_HORIZONTAL | wx.SL_LABELS)
     self.slider1.SetTickFreq(5, 1)
     # Bind the slider to its event handler.
     wx.EVT_SLIDER(self, self.ID_SLIDER1, self.OnSlider1Move)
     # Set up a 'close' event handler to cleanly shut down Csound.
     wx.EVT_CLOSE(parent, self.OnClose)
     # Default pitch.
     self.pitch = 60
     # Create an instance of CppSound.
     self.csound = csnd6.CppSound()
     # Create the Csound thread and start it.
     self.csoundThread = threading.Thread(None, self.csoundThreadRoutine)
     self.csoundThread.start()
Beispiel #8
0
    def __init__(self, parent, iconadd='./Icon/speceg.jpg'):

        wx.Panel.__init__(self, parent, -1)

        self.Spec_Flag = 0
        self.orim = wx.Image(iconadd, wx.BITMAP_TYPE_JPEG)

        #SET THE DEFAULT VALUE OF THE SLIDER POS
        self.pos = 200

        self.panel = wx.Panel(self, -1)

        self.ratio = 15.69565217391304

        self.sld = wx.Slider(self.panel,
                             value=200,
                             minValue=150,
                             maxValue=500,
                             pos=(0, 20),
                             size=(55, 150),
                             style=wx.SL_VERTICAL | wx.SL_AUTOTICKS
                             | wx.SL_LABELS,
                             name='width')
        self.sld.SetTickFreq(20, 1)
        self.sld1 = wx.Slider(self.panel,
                              value=200,
                              minValue=150,
                              maxValue=500,
                              pos=(55, 20),
                              size=(55, 150),
                              style=wx.SL_VERTICAL | wx.SL_AUTOTICKS
                              | wx.SL_LABELS)
        self.sld1.SetTickFreq(20, 1)

        self.Bind(wx.EVT_MENU, self.LeftButton, id=1)
        self.Bind(wx.EVT_MENU, self.RightButton, id=2)
        self.Bind(wx.EVT_MENU, self.LeftText, id=1)
        acceltbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('Z'), 1),
                                        (wx.ACCEL_CTRL, ord('X'), 2)])
        self.SetAcceleratorTable(acceltbl)

        #ADD TWO BUTTONS TO MANIPULATE THE LEFT AND RIGHT BORDER
        self.button1 = wx.Button(self.panel,
                                 id=1,
                                 label='left',
                                 pos=(115, 5),
                                 size=(30, 25))
        self.button2 = wx.Button(self.panel,
                                 id=2,
                                 label='right',
                                 pos=(150, 5),
                                 size=(30, 25))
        self.button3 = wx.Button(self.panel,
                                 id=3,
                                 label='Start',
                                 pos=(80, 5),
                                 size=(30, 25))
        self.button1.Bind(wx.EVT_BUTTON, self.LeftButton)
        self.button2.Bind(wx.EVT_BUTTON, self.RightButton)
        self.button1.Bind(wx.EVT_BUTTON, self.LeftText)
        self.button2.Bind(wx.EVT_BUTTON, self.RightText)
        self.button3.Bind(wx.EVT_BUTTON, self.GetData)
        self.textleft = wx.TextCtrl(self.panel,
                                    id=3,
                                    pos=(115, 40),
                                    size=(70, 25))
        self.textright = wx.TextCtrl(self.panel,
                                     id=4,
                                     pos=(115, 70),
                                     size=(70, 25))
        self.textmid = wx.TextCtrl(self.panel,
                                   id=5,
                                   pos=(115, 100),
                                   size=(70, 25))
        self.textcurr = wx.TextCtrl(self.panel,
                                    id=6,
                                    pos=(115, 130),
                                    size=(70, 25))

        self.im = self.orim
        self.bm = self.im.ConvertToBitmap()

        self.wind = ImageWindow(self)
        self.wind.SetBitmap(self.im.ConvertToBitmap())
        self.wind.SetScrollbars(1, 0, self.im.GetWidth(), 200)
        wx.EVT_SLIDER(self.sld, self.sld.GetId(), self.sliderUpdate1)
        wx.EVT_SLIDER(self.sld1, self.sld1.GetId(), self.sliderUpdate2)
        #UPDATE THE TEXT ON LEFT CLICKING
        self.wind.Bind(wx.EVT_LEFT_UP, self.LeftText)
        self.wind.Bind(wx.EVT_RIGHT_UP, self.RightText)
        self.wind.Bind(wx.EVT_SCROLLWIN, self.MidText)
        self.wind.Bind(wx.EVT_LEFT_UP, self.MidText)
        self.wind.Bind(wx.EVT_RIGHT_UP, self.MidText)
        self.sld1.Bind(wx.EVT_SLIDER, self.sliderUpdate2)
        #self.wind.Bind(wx.EVT_TIMER, self.CurrText, self.wind.timer)
        self.wind.FitInside()
        #self.wind.SetScrollbars(1,0, self.im.GetWidth(), 200)

        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.sizer.Add(self.wind, 1, wx.ALIGN_CENTER, 0)
        self.wind.SetMinSize((300, 150))
        self.sizer.Add(self.panel, wx.ALIGN_LEFT)
        self.panel.SetMinSize((200, 200))
        self.SetSizer(self.sizer)
        self.SetMinSize((500, 200))
Beispiel #9
0
    def createItems(self):
        """create all items"""
        #menu
        self.menubar = wx.MenuBar()
        self.fileMenu = wx.Menu()
        qms = self.fileMenu.Append(wx.ID_SAVE, '&Save Image')
        self.Bind(wx.EVT_MENU, self.OnSave, qms)
        qec = self.fileMenu.Append(wx.ID_ANY, '&Export Coordinates')
        self.Bind(wx.EVT_MENU, self.OnExport, qec)
        qme = self.fileMenu.Append(wx.ID_EXIT, '&Quit')
        self.Bind(wx.EVT_MENU, self.OnQuit, qme)
        self.menubar.Append(self.fileMenu, '&File')
        self.SetMenuBar(self.menubar)

        #image options
        self.zoomTxt = wx.StaticText(self, 200, "Zoom Factor")
        self.slider = wx.Slider(self,
                                300,
                                value=14,
                                minValue=1,
                                maxValue=20,
                                style=wx.SL_HORIZONTAL,
                                size=(500, -1))
        self.combo = wx.ComboBox(self,
                                 500,
                                 "Satellite",
                                 choices=map_types,
                                 style=wx.CB_READONLY,
                                 size=(180, -1))

        wx.EVT_SLIDER(self, 300, self.OnEvent)
        wx.EVT_COMBOBOX(self, 500, self.OnEvent)

        #list
        self.list = CheckListCtrl(self, size=(675, 500))
        self.list.InsertColumn(0, 'Label')
        self.list.InsertColumn(1, 'File Name')
        self.list.InsertColumn(2, 'Latitude')
        self.list.InsertColumn(3, 'Longitude')
        self.list.InsertColumn(4, 'PDOP')
        self.list.SetColumnWidth(0, 50)
        self.list.SetColumnWidth(1, 150)
        self.list.SetColumnWidth(2, 200)
        self.list.SetColumnWidth(3, 200)
        self.list.SetColumnWidth(4, 50)

        self.list.OnCheckItem = self.OnCheckItem

        wx.EVT_CHECKBOX(self.list, 600, self.OnEvent)

        #create list entries
        letters = string.ascii_uppercase
        i = 0
        num_labels = 0
        for entry in self.files:
            lat = self.files[i].header["Latitude"]
            long = self.files[i].header["Longitude"]
            name = os.path.basename(self.files[i].filename)
            pdop = self.files[i].header["PDOP"]

            if -180 <= lat <= 180:
                try:
                    label = letters[num_labels]
                    num_labels += 1
                except:
                    label = letters[0]
                    num_labels = 1

            else:
                label = "-"

            self.label.append(label)
            self.list.InsertStringItem(i, label)
            if not label == "-": self.list.CheckItem(i, True)
            self.list.SetStringItem(i, 1, name)
            self.list.SetStringItem(i, 2, str(lat))
            self.list.SetStringItem(i, 3, str(long))
            self.list.SetStringItem(i, 4, "%.1f" % pdop)
            i += 1
Beispiel #10
0
    def __init_gui(self, frame, panel, vbox):
        self.frame = frame
        self.frame.CreateStatusBar()
        self.panel = panel
        self.vbox = vbox

        # setup the menu bar
        menubar = self.frame.GetMenuBar()

        # setup the "File" menu
        file_menu = menubar.GetMenu(0)
        self.file_new = file_menu.Insert(0, wx.ID_NEW)
        self.frame.Bind(wx.EVT_MENU, self._on_file_new, self.file_new)
        self.file_open = file_menu.Insert(1, wx.ID_OPEN)
        self.frame.Bind(wx.EVT_MENU, self._on_file_open, self.file_open)
        file_menu.InsertSeparator(2)
        self.file_properties = file_menu.Insert(3, wx.ID_PROPERTIES)
        self.frame.Bind(wx.EVT_MENU, self._on_file_properties,
                        self.file_properties)
        file_menu.InsertSeparator(4)
        self.file_close = file_menu.Insert(5, wx.ID_CLOSE)
        self.frame.Bind(wx.EVT_MENU, self._on_file_close, self.file_close)

        # setup the "Edit" menu
        edit_menu = wx.Menu()
        self.edit_undo = edit_menu.Insert(0, wx.ID_UNDO)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_undo, self.edit_undo)
        self.edit_redo = edit_menu.Insert(1, wx.ID_REDO)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_redo, self.edit_redo)
        edit_menu.InsertSeparator(2)
        self.edit_cut = edit_menu.Insert(3, wx.ID_CUT)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_cut, self.edit_cut)
        self.edit_copy = edit_menu.Insert(4, wx.ID_COPY)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_copy, self.edit_copy)
        self.edit_paste = edit_menu.Insert(5, wx.ID_PASTE)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_paste, self.edit_paste)
        self.edit_delete = edit_menu.Insert(6, wx.ID_DELETE)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_delete, self.edit_delete)
        edit_menu.InsertSeparator(7)
        self.edit_select_all = edit_menu.Insert(8, wx.ID_SELECTALL)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_select_all,
                        self.edit_select_all)
        edit_menu.InsertSeparator(9)
        self.edit_prefs = edit_menu.Insert(10, wx.ID_PREFERENCES)
        self.frame.Bind(wx.EVT_MENU, self._on_edit_prefs, self.edit_prefs)
        menubar.Append(edit_menu, "&Edit")
        # ToDo use wx.ID_EDIT stuff

        # setup the toolbar
        if True:
            self.toolbar = wx.ToolBar(frame,
                                      -1,
                                      style=wx.TB_DOCKABLE | wx.TB_HORIZONTAL)
            frame.SetToolBar(self.toolbar)
            icon_size = wx.Size(24, 24)
            new_icon = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_TOOLBAR,
                                                icon_size)
            toolbar_new = self.toolbar.AddSimpleTool(wx.ID_NEW, new_icon,
                                                     "New Capture")
            open_icon = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,
                                                 wx.ART_TOOLBAR, icon_size)
            toolbar_open = self.toolbar.AddSimpleTool(wx.ID_OPEN, open_icon,
                                                      "Open")
            #
            self.toolbar.AddSeparator()
            self.gain_control = wx.Slider(self.toolbar,
                                          11101,
                                          1,
                                          1,
                                          150,
                                          size=(200, 50),
                                          style=wx.SL_HORIZONTAL)
            self.gain_control.SetTickFreq(5, 1)
            wx.EVT_SLIDER(self.toolbar, 11101, self.gain_slider_chg)
            self.toolbar.AddControl(self.gain_control)
            #
            self.gain_field = wx.TextCtrl(self.toolbar,
                                          -1,
                                          "",
                                          size=(50, -1),
                                          style=wx.TE_READONLY)
            self.gain_field.SetValue(str(1))
            self.toolbar.AddSeparator()
            self.toolbar.AddControl(self.gain_field)  # , pos=(1,2))

            self.toolbar.Realize()
        else:
            self.toolbar = None

        # setup the notebook
        self.notebook = wx.Notebook(self.panel)
        self.vbox.Add(self.notebook, 1, wx.EXPAND)
        # add spectrum scope
        self.spectrum = fftsink2.fft_sink_c(self.notebook,
                                            fft_size=512,
                                            fft_rate=2,
                                            average=True,
                                            peak_hold=True)
        self.spectrum_plotter = self.spectrum.win.plot
        self.spectrum_plotter.Bind(wx.EVT_LEFT_DOWN,
                                   self._on_spectrum_left_click)
        self.notebook.AddPage(self.spectrum.win, "RF Spectrum")
        # add C4FM scope
        self.signal_scope = scopesink2.scope_sink_f(
            self.notebook,
            sample_rate=self.channel_rate,
            v_scale=5,
            t_scale=0.001)
        self.signal_plotter = self.signal_scope.win.graph
        self.notebook.AddPage(self.signal_scope.win, "C4FM Signal")
        # add datascope
        self.data_scope = datascope_sink_f(
            self.notebook,
            samples_per_symbol=self.channel_rate // self.symbol_rate,
            num_plots=100)
        self.data_plotter = self.data_scope.win.graph
        wx.EVT_RADIOBOX(self.data_scope.win.radio_box, 11103,
                        self.filter_select)
        self.notebook.AddPage(self.data_scope.win, "Datascope")
        # add symbol scope
        self.symbol_scope = scopesink2.scope_sink_f(
            self.notebook,
            frame_decim=1,
            sample_rate=self.symbol_rate,
            v_scale=1,
            t_scale=0.05)
        self.symbol_plotter = self.symbol_scope.win.graph
        self.symbol_scope.win.set_format_plus()
        self.notebook.AddPage(self.symbol_scope.win, "Demodulated Symbols")
        # Traffic snapshot
        self.traffic = TrafficPane(self.notebook)
        self.notebook.AddPage(self.traffic, "Traffic")
        # symbol slicer
        levels = [-2.0, 0.0, 2.0, 4.0]
        self.slicer = op25.fsk4_slicer_fb(levels)
        # Setup the decoder and report the TUN/TAP device name
        self.msgq = gr.msg_queue(2)
        self.decode_watcher = decode_watcher(self.msgq, self.traffic)
        self.p25_decoder = op25.decoder_bf()
        self.p25_decoder.set_msgq(self.msgq)
        self.frame.SetStatusText("TUN/TAP: " + self.p25_decoder.destination())
Beispiel #11
0
    def addZslider(self):
        self.sliderPanel = wx.Panel(self, -1)

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.sliderPanel.SetSizer(sizer)

        # image info
        # \n
        box = G.newSpaceV(sizer)

        bb, box = G.newStaticBox(self.sliderPanel,
                                 box,
                                 title='Image info',
                                 size=wx.DefaultSize)

        if sys.platform.startswith(('win', 'linux')):
            fsize = 9
        else:
            fsize = 11
        font = wx.Font(fsize, wx.SWISS, wx.NORMAL, wx.NORMAL)

        # pixel size
        pxsiz = tuple(self.doc.pxlsiz[::-1])
        dimstr = ('X', 'Y', 'Z')
        line = 'Pixel size (um):\n'
        pxstr = '  '
        for i, d in enumerate(pxsiz):
            if d:
                pxstr += '%s %.3f: ' % (dimstr[i], d)
        if pxstr:
            line += pxstr[:-2]
        else:
            line = ''
        if line:
            label = G.makeTxt(self.sliderPanel, box, line)
            label.SetFont(font)
        # data type
        pxtype = bioformatsIO.pixeltype_to_bioformats(self.doc.dtype)
        line = 'Data type: %s' % pxtype
        label = G.makeTxt(self.sliderPanel, box, line)
        label.SetFont(font)

        # z slider
        if self.doc.nz > 1:
            topSizer = G.newSpaceV(sizer)

            label, self.zSliderBox = G.makeTxtBox(self.sliderPanel,
                                                  topSizer,
                                                  'Z',
                                                  defValue=str(self.doc.z),
                                                  tip='enter z idx',
                                                  style=wx.TE_PROCESS_ENTER)

            self.zSliderBox.Bind(wx.EVT_TEXT_ENTER, self.OnZSliderBox)

            G.makeTxt(self.sliderPanel, topSizer, r'/' + str(self.doc.nz - 1))

            self.zSlider = wx.Slider(
                self.sliderPanel,
                wx.ID_ANY,
                self.doc.z,
                0,
                self.doc.nz - 1,
                size=wx.Size(150, -1),
                style=wx.SL_HORIZONTAL
                | wx.SL_AUTOTICKS)  #|wx.SL_LABELS | wx.SL_AUTOTICKS)

            topSizer.Add(self.zSlider, 6, wx.ALL | wx.ALIGN_LEFT, 2)
            wx.EVT_SLIDER(self, self.zSlider.GetId(), self.OnZSlider)
            #wx.EVT_KEY_DOWN(self, self.zSlider.GetId(), self.OnKeyZSlider)
            #self.zSlider.Bind(wx.EVT_KEY_DOWN, self.OnKeyZSlider)
            if self.doc.nt == 1:
                self.sliderPanel.Bind(wx.EVT_KEY_DOWN, self.OnKeyZSlider)
            self.zSlider.Bind(wx.EVT_KEY_DOWN, self.OnKeyZSlider)
            #self.Bind(wx.EVT_CHAR, self.OnKeyZSlider)

            #/n
            box = G.newSpaceV(sizer)

            self.orthogonal_toggle = G.makeToggleButton(
                self.sliderPanel,
                box,
                self.onOrthogonal,
                title='Orthogonal projections')

        # t slider
        if self.doc.nt > 1:  ## need a time slider
            box = G.newSpaceV(sizer)

            label, self.tSliderBox = G.makeTxtBox(self.sliderPanel,
                                                  box,
                                                  'T',
                                                  defValue=str(self.doc.t),
                                                  tip='enter time idx',
                                                  style=wx.TE_PROCESS_ENTER)

            self.tSliderBox.Bind(wx.EVT_TEXT_ENTER, self.OnTSliderBox)

            G.makeTxt(self.sliderPanel, box, r'/' + str(self.doc.nt - 1))

            self.tSlider = wx.Slider(
                self.sliderPanel,
                wx.ID_ANY,
                0,
                0,
                self.doc.nt - 1,
                size=wx.Size(150, -1),
                style=wx.SL_HORIZONTAL
                | wx.SL_AUTOTICKS)  #|wx.SL_LABELS | wx.SL_AUTOTICKS)
            box.Add(self.tSlider, 6, wx.ALL | wx.ALIGN_LEFT, 2)
            wx.EVT_SLIDER(self, self.tSlider.GetId(), self.OnTSlider)

            if self.doc.nz == 1:
                self.sliderPanel.Bind(wx.EVT_KEY_DOWN, self.OnKeyTSlider)
            self.tSlider.Bind(wx.EVT_KEY_DOWN, self.OnKeyTSlider)
Beispiel #12
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.slider_1 = wx.Slider(self,
                                  ID_SLIDER_1,
                                  6,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_2 = wx.Slider(self,
                                  ID_SLIDER_2,
                                  1,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_3 = wx.Slider(self,
                                  ID_SLIDER_3,
                                  3,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_4 = wx.Slider(self,
                                  ID_SLIDER_4,
                                  4,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_5 = wx.Slider(self,
                                  ID_SLIDER_5,
                                  4,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_6 = wx.Slider(self,
                                  ID_SLIDER_6,
                                  6,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_7 = wx.Slider(self,
                                  ID_SLIDER_7,
                                  6,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_8 = wx.Slider(self,
                                  ID_SLIDER_8,
                                  8,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_9 = wx.Slider(self,
                                  ID_SLIDER_9,
                                  3,
                                  0,
                                  100,
                                  style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_10 = wx.Slider(self,
                                   ID_SLIDER_10,
                                   12,
                                   0,
                                   100,
                                   style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_11 = wx.Slider(self,
                                   ID_SLIDER_11,
                                   4,
                                   0,
                                   100,
                                   style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_12 = wx.Slider(self,
                                   ID_SLIDER_12,
                                   6,
                                   0,
                                   100,
                                   style=wx.SL_VERTICAL | wx.SL_LABELS)
        self.slider_13 = wx.Slider(self,
                                   ID_SLIDER_13,
                                   10,
                                   0,
                                   100,
                                   style=wx.SL_VERTICAL | wx.SL_LABELS)

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

        wx.EVT_SLIDER(self, ID_SLIDER_1, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_2, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_3, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_4, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_5, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_6, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_7, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_8, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_9, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_10, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_11, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_12, self.update)
        wx.EVT_SLIDER(self, ID_SLIDER_13, self.update)

        self.g = Gnuplot.Gnuplot()
        self.g('set xrange [-30:30]')
        self.g('set yrange [-30:30]')
        self.g('set style data dots')
        # do first plot
        self.update(self)
Beispiel #13
0
    def __init__(self, parent, fn):
        """
        fn: a chromagnon file
        """
        wx.Panel.__init__(self, parent, -1)

        self.clist = ChromagnonList(self, fn)
        self.fn = fn

        # start drawing
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)

        # \n
        box = G.newSpaceV(sizer)
        G.makeTxt(self, box, fn)

        # \n
        box = G.newSpaceV(sizer)
        if self.clist.map_str != 'None':
            G.makeTxt(self, box, 'Local: ')
            self.local_label = G.makeTxt(self, box, self.clist.map_str)
            self.viewLocalButton = G.makeButton(
                self,
                box,
                self.onViewLocal,
                title='View',
                tip='View local distortion as a image')
            # \n
            box = G.newSpaceV(sizer)
            G.makeTxt(
                self, box,
                "The file is a .ome.tif file, and the alignment parameters are stored in it's metadata."
            )
        else:
            # \n
            box = G.newSpaceV(sizer)
            G.makeTxt(
                self, box,
                'The file is a text file: rename to ".csv" to open as a spread sheet.'
            )

        # \n\n
        box = G.newSpaceV(sizer)
        G.makeTxt(self, box, ' ')
        box = G.newSpaceV(sizer)
        G.makeTxt(
            self, box, 'Pixel size ZYX (um): %.3f  %.3f  %.3f' %
            tuple(self.clist.creader.pxlsiz))

        if self.clist.nt > 1:
            # \n
            box = G.newSpaceV(sizer)
            label, self.tSliderBox = G.makeTxtBox(self,
                                                  box,
                                                  'T',
                                                  defValue=str(self.clist.t),
                                                  tip='enter time idx',
                                                  style=wx.TE_PROCESS_ENTER)

            self.tSliderBox.Bind(wx.EVT_TEXT_ENTER, self.OnTSliderBox)

            G.makeTxt(self, box, r'/' + str(self.clist.nt - 1))

            self.tSlider = wx.Slider(self,
                                     wx.ID_ANY,
                                     0,
                                     0,
                                     self.clist.nt - 1,
                                     size=wx.Size(150, -1),
                                     style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
            box.Add(self.tSlider, 6, wx.ALL | wx.ALIGN_LEFT, 2)
            wx.EVT_SLIDER(self, self.tSlider.GetId(), self.OnTSlider)

        # \n
        box = G.newSpaceV(sizer)
        box.Add(self.clist)

        # \n
        box = G.newSpaceV(sizer)

        self.saveButton = G.makeButton(
            self,
            box,
            self.onSave,
            title='Save as...',
            tip='Save editted parameter into a chromagnon file'
        )  #, enable=False)

        #self.exportButton = G.makeButton(self, box, self.onExport, title='Export as .csv', tip='Save editted parameter into a comma separated file')

        self.clearButton = G.makeButton(self,
                                        box,
                                        self.clearSelected,
                                        title='Remove selected',
                                        tip='Remove one wavelength')

        self.addButton = G.makeButton(self,
                                      box,
                                      self.addRow,
                                      title='add wavelength',
                                      tip='Add one wavelength')

        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.clist)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemSelected, self.clist)
Beispiel #14
0
    def optic_flow_panel_init(self):
        """
        Initializes the optic flow notebook page of the GUI
        """
        self.optic_flow_panel = xrc.XRCCTRL(self.notebook, Optic_Flow_PANEL)

        # Setup optic flow panel controls
        self.optic_flow_enable_box = xrc.XRCCTRL(self.optic_flow_panel,
                                                 Optic_Flow_Enable_CHECKBOX)
        self.num_row_spin_ctrl = xrc.XRCCTRL(self.optic_flow_panel,
                                             Num_Row_SPINCTRL)
        self.num_col_spin_ctrl = xrc.XRCCTRL(self.optic_flow_panel,
                                             Num_Col_SPINCTRL)
        self.window_size_spin_ctrl = xrc.XRCCTRL(self.optic_flow_panel,
                                                 Window_Size_SPINCTRL)
        self.poll_int_text_ctrl = xrc.XRCCTRL(self.optic_flow_panel,
                                              Poll_Interval_TEXTCTRL)
        self.horiz_space_slider = xrc.XRCCTRL(self.optic_flow_panel,
                                              Horiz_Space_SLIDER)
        self.horiz_position_slider = xrc.XRCCTRL(self.optic_flow_panel,
                                                 Horiz_Position_SLIDER)
        self.vert_space_slider = xrc.XRCCTRL(self.optic_flow_panel,
                                             Vert_Space_SLIDER)
        self.vert_position_slider = xrc.XRCCTRL(self.optic_flow_panel,
                                                Vert_Position_SLIDER)

        # Setup events for optic flow panel controls
        wx.EVT_CHECKBOX(self.optic_flow_enable_box,
                        xrc.XRCID(Optic_Flow_Enable_CHECKBOX),
                        self.on_optic_flow_enable)
        wx.EVT_SPINCTRL(self.num_row_spin_ctrl, xrc.XRCID(Num_Row_SPINCTRL),
                        self.on_num_row_spin_ctrl)
        wx.EVT_SPINCTRL(self.num_col_spin_ctrl, xrc.XRCID(Num_Col_SPINCTRL),
                        self.on_num_col_spin_ctrl)
        wx.EVT_SPINCTRL(self.window_size_spin_ctrl,
                        xrc.XRCID(Window_Size_SPINCTRL),
                        self.on_window_size_spin_ctrl)
        wx.EVT_TEXT_ENTER(self.poll_int_text_ctrl,
                          xrc.XRCID(Poll_Interval_TEXTCTRL),
                          self.on_poll_int_text_enter)
        wx.EVT_SLIDER(self.horiz_space_slider, xrc.XRCID(Horiz_Space_SLIDER),
                      self.on_horiz_space_slider)
        wx.EVT_SLIDER(self.horiz_position_slider,
                      xrc.XRCID(Horiz_Position_SLIDER),
                      self.on_horiz_position_slider)
        wx.EVT_SLIDER(self.vert_space_slider, xrc.XRCID(Vert_Space_SLIDER),
                      self.on_vert_space_slider)
        wx.EVT_SLIDER(self.vert_position_slider,
                      xrc.XRCID(Vert_Position_SLIDER),
                      self.on_vert_position_slider)

        # Set default values for optic flow panel
        self.optic_flow_enable = OPTIC_FLOW_DEFAULTS['opticflow_enable']
        self.optic_flow_enable_box.SetValue(self.optic_flow_enable)

        self.poll_int = OPTIC_FLOW_DEFAULTS['poll_int']
        self.poll_int_text_ctrl.SetValue(str(self.poll_int))

        self.wnd = OPTIC_FLOW_DEFAULTS['wnd']
        self.window_size_spin_ctrl.SetValue(self.wnd)

        self.num_row = OPTIC_FLOW_DEFAULTS['num_row']
        self.num_row_spin_ctrl.SetValue(self.num_row)

        self.num_col = OPTIC_FLOW_DEFAULTS['num_col']
        self.num_col_spin_ctrl.SetValue(self.num_col)

        self.horiz_space = OPTIC_FLOW_DEFAULTS['horiz_space']
        set_slider_value(self.horiz_space_slider, self.horiz_space)

        self.horiz_pos = OPTIC_FLOW_DEFAULTS['horiz_pos']
        set_slider_value(self.horiz_position_slider, self.horiz_pos)

        self.vert_space = OPTIC_FLOW_DEFAULTS['vert_space']
        set_slider_value(self.vert_space_slider, self.vert_space)

        self.vert_pos = OPTIC_FLOW_DEFAULTS['vert_pos']
        set_slider_value(self.vert_position_slider, self.vert_pos)
Beispiel #15
0
    def __init__(self, parent, fn):
        """
        fn: a chromagnon file
        """
        wx.Panel.__init__(self, parent, -1)

        self.clist = ChromagnonList(self, fn)
        self.fn = fn

        # start drawing
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)

        # \n
        box = G.newSpaceV(sizer)
        G.makeTxt(self, box, fn)

        # \n
        box = G.newSpaceV(sizer)
        if self.clist.map_str != 'None':
            G.makeTxt(self, box, 'Local: ')
            self.local_label = G.makeTxt(self, box, self.clist.map_str)

            # \n
            box = G.newSpaceV(sizer)

            self.viewLocalButton = G.makeButton(
                self,
                box,
                self.onViewLocal,
                title='View',
                tip='View local distortion as a image')

            choice = [
                str(wave) for wave in self.clist.wave
                if wave != self.clist.wave[self.clist.refwave]
            ]
            label, self.wavechoice = G.makeListChoice(self,
                                                      box,
                                                      'wavelength',
                                                      choice,
                                                      defValue=choice[0])

            self.originalFileButton = G.makeButton(self,
                                                   box,
                                                   self.onChooseOriginalFile,
                                                   title='original image file',
                                                   tip='')

            default = os.path.splitext(fn)[0]
            if default.endswith('chromagnon'):
                default = os.path.splitext(default)[0]
            if not os.path.isfile(default):
                default = ''
            label, self.originalFileTxt = G.makeTxtBox(self,
                                                       box,
                                                       '',
                                                       defValue=default,
                                                       tip='',
                                                       sizeX=200)

            choice = [str(factor) for factor in (1, 5, 10, 15, 20)]
            label, self.factorchoice = G.makeListChoice(self,
                                                        box,
                                                        'magnification',
                                                        choice,
                                                        defValue=choice[2])

            self.color_name = ['black'] + [
                colstr for colstr in microscope.COLOR_NAME
            ]
            label, self.colorchoice = G.makeListChoice(
                self,
                box,
                'arrow color',
                self.color_name,
                defValue=self.color_name[-1])

            # \n
            box = G.newSpaceV(sizer)
            G.makeTxt(
                self, box,
                "The file is a .ome.tif file, and the alignment parameters are stored in it's metadata."
            )
        else:
            # \n
            box = G.newSpaceV(sizer)
            G.makeTxt(
                self, box,
                'The file is a text file: rename to ".csv" to open as a spread sheet.'
            )

        # \n\n
        box = G.newSpaceV(sizer)
        G.makeTxt(self, box, ' ')
        box = G.newSpaceV(sizer)
        G.makeTxt(
            self, box, 'Pixel size ZYX (um): %.3f  %.3f  %.3f' %
            tuple(self.clist.creader.pxlsiz))

        if self.clist.nt > 1:
            # \n
            box = G.newSpaceV(sizer)
            label, self.tSliderBox = G.makeTxtBox(self,
                                                  box,
                                                  'T',
                                                  defValue=str(self.clist.t),
                                                  tip='enter time idx',
                                                  style=wx.TE_PROCESS_ENTER)

            self.tSliderBox.Bind(wx.EVT_TEXT_ENTER, self.OnTSliderBox)

            G.makeTxt(self, box, r'/' + str(self.clist.nt - 1))

            self.tSlider = wx.Slider(self,
                                     wx.ID_ANY,
                                     0,
                                     0,
                                     self.clist.nt - 1,
                                     size=wx.Size(150, -1),
                                     style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
            box.Add(self.tSlider, 6, wx.ALL | wx.ALIGN_LEFT, 2)
            wx.EVT_SLIDER(self, self.tSlider.GetId(), self.OnTSlider)

        # \n
        box = G.newSpaceV(sizer)
        box.Add(self.clist)

        # \n
        box = G.newSpaceV(sizer)

        self.saveButton = G.makeButton(
            self,
            box,
            self.onExport,
            title='Save as...',
            tip='Save editted parameter into a chromagnon file'
        )  #, enable=False)

        #self.exportButton = G.makeButton(self, box, self.onExport, title='Export as .csv', tip='Save editted parameter into a comma separated file')

        self.clearButton = G.makeButton(self,
                                        box,
                                        self.clearSelected,
                                        title='Remove selected',
                                        tip='Remove one wavelength')

        self.addButton = G.makeButton(self,
                                      box,
                                      self.addRow,
                                      title='add wavelength',
                                      tip='Add one wavelength')

        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.clist)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemSelected, self.clist)
Beispiel #16
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)

        # Menu Bar
        self.frame_1_menubar = wx.MenuBar()
        self.SetMenuBar(self.frame_1_menubar)
        wxglade_tmp_menu = wx.Menu()
        self.Exit = wx.MenuItem(wxglade_tmp_menu, ID_EXIT, "Exit", "Exit",
                                wx.ITEM_NORMAL)
        wxglade_tmp_menu.AppendItem(self.Exit)
        self.frame_1_menubar.Append(wxglade_tmp_menu, "File")
        # Menu Bar end
        self.panel_1 = wx.Panel(self, -1)
        self.button_1 = wx.Button(self, ID_BUTTON_1, "LSB")
        self.button_2 = wx.Button(self, ID_BUTTON_2, "USB")
        self.button_3 = wx.Button(self, ID_BUTTON_3, "AM")
        self.button_4 = wx.Button(self, ID_BUTTON_4, "CW")
        self.button_5 = wx.ToggleButton(self, ID_BUTTON_5, "Upper")
        self.slider_fcutoff_hi = wx.Slider(self,
                                           ID_SLIDER_1,
                                           0,
                                           -15798,
                                           15799,
                                           style=wx.SL_HORIZONTAL
                                           | wx.SL_LABELS)
        self.button_6 = wx.ToggleButton(self, ID_BUTTON_6, "Lower")
        self.slider_fcutoff_lo = wx.Slider(self,
                                           ID_SLIDER_2,
                                           0,
                                           -15799,
                                           15798,
                                           style=wx.SL_HORIZONTAL
                                           | wx.SL_LABELS)
        self.panel_5 = wx.Panel(self, -1)
        self.label_1 = wx.StaticText(self, -1, " Band\nCenter")
        self.text_ctrl_1 = wx.TextCtrl(self, ID_TEXT_1, "")
        self.panel_6 = wx.Panel(self, -1)
        self.panel_7 = wx.Panel(self, -1)
        self.panel_2 = wx.Panel(self, -1)
        self.button_7 = wx.ToggleButton(self, ID_BUTTON_7, "Freq")
        self.slider_3 = wx.Slider(self, ID_SLIDER_3, 3000, 0, 6000)
        self.spin_ctrl_1 = wx.SpinCtrl(self, ID_SPIN_1, "", min=0, max=100)
        self.button_8 = wx.ToggleButton(self, ID_BUTTON_8, "Vol")
        self.slider_4 = wx.Slider(self, ID_SLIDER_4, 0, 0, 500)
        self.slider_5 = wx.Slider(self, ID_SLIDER_5, 0, 0, 20)
        self.button_9 = wx.ToggleButton(self, ID_BUTTON_9, "Time")
        self.button_11 = wx.Button(self, ID_BUTTON_11, "Rew")
        self.button_10 = wx.Button(self, ID_BUTTON_10, "Fwd")
        self.panel_3 = wx.Panel(self, -1)
        self.label_2 = wx.StaticText(self, -1, "PGA               ")
        self.panel_4 = wx.Panel(self, -1)
        self.panel_8 = wx.Panel(self, -1)
        self.panel_9 = wx.Panel(self, -1)
        self.label_3 = wx.StaticText(self, -1, "AM Sync\nCarrier")
        self.slider_6 = wx.Slider(self,
                                  ID_SLIDER_6,
                                  50,
                                  0,
                                  200,
                                  style=wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.label_4 = wx.StaticText(self, -1, "Antenna Tune")
        self.slider_7 = wx.Slider(self,
                                  ID_SLIDER_7,
                                  1575,
                                  950,
                                  2200,
                                  style=wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.panel_10 = wx.Panel(self, -1)
        self.button_12 = wx.ToggleButton(self, ID_BUTTON_12, "Auto Tune")
        self.button_13 = wx.Button(self, ID_BUTTON_13, "Calibrate")
        self.button_14 = wx.Button(self, ID_BUTTON_14, "Reset")
        self.panel_11 = wx.Panel(self, -1)
        self.panel_12 = wx.Panel(self, -1)

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

        parser = OptionParser(option_class=eng_option)
        parser.add_option("",
                          "--address",
                          type="string",
                          default="addr=192.168.10.2",
                          help="Address of UHD device, [default=%default]")
        parser.add_option("-c",
                          "--ddc-freq",
                          type="eng_float",
                          default=3.9e6,
                          help="set Rx DDC frequency to FREQ",
                          metavar="FREQ")
        parser.add_option(
            "-s",
            "--samp-rate",
            type="eng_float",
            default=256e3,
            help="set sample rate (bandwidth) [default=%default]")
        parser.add_option("-a",
                          "--audio_file",
                          default="",
                          help="audio output file",
                          metavar="FILE")
        parser.add_option("-r",
                          "--radio_file",
                          default="",
                          help="radio output file",
                          metavar="FILE")
        parser.add_option("-i",
                          "--input_file",
                          default="",
                          help="radio input file",
                          metavar="FILE")
        parser.add_option(
            "-O",
            "--audio-output",
            type="string",
            default="",
            help="audio output device name. E.g., hw:0,0, /dev/dsp, or pulse")

        (options, args) = parser.parse_args()

        self.usrp_center = options.ddc_freq
        input_rate = options.samp_rate
        self.slider_range = input_rate * 0.9375
        self.f_lo = self.usrp_center - (self.slider_range / 2)
        self.f_hi = self.usrp_center + (self.slider_range / 2)
        self.af_sample_rate = 32000
        fir_decim = long(input_rate / self.af_sample_rate)

        # data point arrays for antenna tuner
        self.xdata = []
        self.ydata = []

        self.tb = gr.top_block()

        # radio variables, initial conditions
        self.frequency = self.usrp_center
        # these map the frequency slider (0-6000) to the actual range
        self.f_slider_offset = self.f_lo
        self.f_slider_scale = 10000
        self.spin_ctrl_1.SetRange(self.f_lo, self.f_hi)
        self.text_ctrl_1.SetValue(str(int(self.usrp_center)))
        self.slider_5.SetValue(0)
        self.AM_mode = False

        self.slider_3.SetValue(
            (self.frequency - self.f_slider_offset) / self.f_slider_scale)
        self.spin_ctrl_1.SetValue(int(self.frequency))

        POWERMATE = True
        try:
            self.pm = powermate.powermate(self)
        except:
            sys.stderr.write("Unable to find PowerMate or Contour Shuttle\n")
            POWERMATE = False

        if POWERMATE:
            powermate.EVT_POWERMATE_ROTATE(self, self.on_rotate)
            powermate.EVT_POWERMATE_BUTTON(self, self.on_pmButton)
        self.active_button = 7

        # command line options
        if options.audio_file == "": SAVE_AUDIO_TO_FILE = False
        else: SAVE_AUDIO_TO_FILE = True
        if options.radio_file == "": SAVE_RADIO_TO_FILE = False
        else: SAVE_RADIO_TO_FILE = True
        if options.input_file == "": self.PLAY_FROM_USRP = True
        else: self.PLAY_FROM_USRP = False

        if self.PLAY_FROM_USRP:
            self.src = uhd.usrp_source(device_addr=options.address,
                                       io_type=uhd.io_type.COMPLEX_FLOAT32,
                                       num_channels=1)
            self.src.set_samp_rate(input_rate)
            input_rate = self.src.get_samp_rate()

            self.src.set_center_freq(self.usrp_center, 0)
            self.tune_offset = 0

        else:
            self.src = gr.file_source(gr.sizeof_short, options.input_file)
            self.tune_offset = 2200  # 2200 works for 3.5-4Mhz band

            # convert rf data in interleaved short int form to complex
            s2ss = gr.stream_to_streams(gr.sizeof_short, 2)
            s2f1 = gr.short_to_float()
            s2f2 = gr.short_to_float()
            src_f2c = gr.float_to_complex()
            self.tb.connect(self.src, s2ss)
            self.tb.connect((s2ss, 0), s2f1)
            self.tb.connect((s2ss, 1), s2f2)
            self.tb.connect(s2f1, (src_f2c, 0))
            self.tb.connect(s2f2, (src_f2c, 1))

        # save radio data to a file
        if SAVE_RADIO_TO_FILE:
            radio_file = gr.file_sink(gr.sizeof_short, options.radio_file)
            self.tb.connect(self.src, radio_file)

# 2nd DDC
        xlate_taps = gr.firdes.low_pass ( \
           1.0, input_rate, 16e3, 4e3, gr.firdes.WIN_HAMMING )
        self.xlate = gr.freq_xlating_fir_filter_ccf ( \
           fir_decim, xlate_taps, self.tune_offset, input_rate )

        # Complex Audio filter
        audio_coeffs = gr.firdes.complex_band_pass(
            1.0,  # gain
            self.af_sample_rate,  # sample rate
            -3000,  # low cutoff
            0,  # high cutoff
            100,  # transition
            gr.firdes.WIN_HAMMING)  # window
        self.slider_fcutoff_hi.SetValue(0)
        self.slider_fcutoff_lo.SetValue(-3000)

        self.audio_filter = gr.fir_filter_ccc(1, audio_coeffs)

        # Main +/- 16Khz spectrum display
        self.fft = fftsink2.fft_sink_c(self.panel_2,
                                       fft_size=512,
                                       sample_rate=self.af_sample_rate,
                                       average=True,
                                       size=(640, 240))

        # AM Sync carrier
        if AM_SYNC_DISPLAY:
            self.fft2 = fftsink.fft_sink_c(self.tb,
                                           self.panel_9,
                                           y_per_div=20,
                                           fft_size=512,
                                           sample_rate=self.af_sample_rate,
                                           average=True,
                                           size=(640, 240))

        c2f = gr.complex_to_float()

        # AM branch
        self.sel_am = gr.multiply_const_cc(0)
        # the following frequencies turn out to be in radians/sample
        # gr.pll_refout_cc(alpha,beta,min_freq,max_freq)
        # suggested alpha = X, beta = .25 * X * X
        pll = gr.pll_refout_cc(.5, .0625,
                               (2. * math.pi * 7.5e3 / self.af_sample_rate),
                               (2. * math.pi * 6.5e3 / self.af_sample_rate))
        self.pll_carrier_scale = gr.multiply_const_cc(complex(10, 0))
        am_det = gr.multiply_cc()
        # these are for converting +7.5kHz to -7.5kHz
        # for some reason gr.conjugate_cc() adds noise ??
        c2f2 = gr.complex_to_float()
        c2f3 = gr.complex_to_float()
        f2c = gr.float_to_complex()
        phaser1 = gr.multiply_const_ff(1)
        phaser2 = gr.multiply_const_ff(-1)

        # filter for pll generated carrier
        pll_carrier_coeffs = gr.firdes.complex_band_pass(
            2.0,  # gain
            self.af_sample_rate,  # sample rate
            7400,  # low cutoff
            7600,  # high cutoff
            100,  # transition
            gr.firdes.WIN_HAMMING)  # window

        self.pll_carrier_filter = gr.fir_filter_ccc(1, pll_carrier_coeffs)

        self.sel_sb = gr.multiply_const_ff(1)
        combine = gr.add_ff()

        #AGC
        sqr1 = gr.multiply_ff()
        intr = gr.iir_filter_ffd([.004, 0], [0, .999])
        offset = gr.add_const_ff(1)
        agc = gr.divide_ff()

        self.scale = gr.multiply_const_ff(0.00001)
        dst = audio.sink(long(self.af_sample_rate), options.audio_output)

        if self.PLAY_FROM_USRP:
            self.tb.connect(self.src, self.xlate, self.fft)
        else:
            self.tb.connect(src_f2c, self.xlate, self.fft)

        self.tb.connect(self.xlate, self.audio_filter, self.sel_am,
                        (am_det, 0))
        self.tb.connect(self.sel_am, pll, self.pll_carrier_scale,
                        self.pll_carrier_filter, c2f3)
        self.tb.connect((c2f3, 0), phaser1, (f2c, 0))
        self.tb.connect((c2f3, 1), phaser2, (f2c, 1))
        self.tb.connect(f2c, (am_det, 1))
        self.tb.connect(am_det, c2f2, (combine, 0))
        self.tb.connect(self.audio_filter, c2f, self.sel_sb, (combine, 1))

        if AM_SYNC_DISPLAY:
            self.tb.connect(self.pll_carrier_filter, self.fft2)

        self.tb.connect(combine, self.scale)
        self.tb.connect(self.scale, (sqr1, 0))
        self.tb.connect(self.scale, (sqr1, 1))
        self.tb.connect(sqr1, intr, offset, (agc, 1))
        self.tb.connect(self.scale, (agc, 0))
        self.tb.connect(agc, dst)

        if SAVE_AUDIO_TO_FILE:
            f_out = gr.file_sink(gr.sizeof_short, options.audio_file)
            sc1 = gr.multiply_const_ff(64000)
            f2s1 = gr.float_to_short()
            self.tb.connect(agc, sc1, f2s1, f_out)

        self.tb.start()

        # for mouse position reporting on fft display
        self.fft.win.Bind(wx.EVT_LEFT_UP, self.Mouse)
        # and left click to re-tune
        self.fft.win.Bind(wx.EVT_LEFT_DOWN, self.Click)

        # start a timer to check for web commands
        if WEB_CONTROL:
            self.timer = UpdateTimer(self, 1000)  # every 1000 mSec, 1 Sec

        wx.EVT_BUTTON(self, ID_BUTTON_1, self.set_lsb)
        wx.EVT_BUTTON(self, ID_BUTTON_2, self.set_usb)
        wx.EVT_BUTTON(self, ID_BUTTON_3, self.set_am)
        wx.EVT_BUTTON(self, ID_BUTTON_4, self.set_cw)
        wx.EVT_BUTTON(self, ID_BUTTON_10, self.fwd)
        wx.EVT_BUTTON(self, ID_BUTTON_11, self.rew)
        wx.EVT_BUTTON(self, ID_BUTTON_13, self.AT_calibrate)
        wx.EVT_BUTTON(self, ID_BUTTON_14, self.AT_reset)
        wx.EVT_TOGGLEBUTTON(self, ID_BUTTON_5, self.on_button)
        wx.EVT_TOGGLEBUTTON(self, ID_BUTTON_6, self.on_button)
        wx.EVT_TOGGLEBUTTON(self, ID_BUTTON_7, self.on_button)
        wx.EVT_TOGGLEBUTTON(self, ID_BUTTON_8, self.on_button)
        wx.EVT_TOGGLEBUTTON(self, ID_BUTTON_9, self.on_button)
        wx.EVT_SLIDER(self, ID_SLIDER_1, self.set_filter)
        wx.EVT_SLIDER(self, ID_SLIDER_2, self.set_filter)
        wx.EVT_SLIDER(self, ID_SLIDER_3, self.slide_tune)
        wx.EVT_SLIDER(self, ID_SLIDER_4, self.set_volume)
        wx.EVT_SLIDER(self, ID_SLIDER_5, self.set_pga)
        wx.EVT_SLIDER(self, ID_SLIDER_6, self.am_carrier)
        wx.EVT_SLIDER(self, ID_SLIDER_7, self.antenna_tune)
        wx.EVT_SPINCTRL(self, ID_SPIN_1, self.spin_tune)

        wx.EVT_MENU(self, ID_EXIT, self.TimeToQuit)
Beispiel #17
0
    def __init__(self, parent, iconadd='./Icon/speceg.jpg'):

        wx.Panel.__init__(self, parent, -1)

        self.Spec_Flag = 0
        Background = (57, 59, 66)
        myfont = wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
                         u'Segoe UI')
        myfont_small = wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
                               u'Segoe UI')
        back = (77, 77, 77)
        FontColour = (229, 229, 229)
        self.orim = wx.Image(iconadd, wx.BITMAP_TYPE_JPEG)

        #SET THE DEFAULT VALUE OF THE SLIDER POS
        self.pos = 200

        self.panel = wx.Panel(self, -1)

        self.sld = wx.Slider(self.panel,
                             value=200,
                             minValue=150,
                             maxValue=500,
                             size=(10, 25),
                             style=wx.SL_VERTICAL | wx.SL_AUTOTICKS
                             | wx.SL_LABELS,
                             name='width')
        self.sld.SetTickFreq(20, 1)
        self.sld1 = wx.Slider(self.panel,
                              value=200,
                              minValue=150,
                              maxValue=500,
                              size=(10, 25),
                              style=wx.SL_VERTICAL | wx.SL_AUTOTICKS
                              | wx.SL_LABELS)
        self.sld1.SetTickFreq(20, 1)

        self.Bind(wx.EVT_MENU, self.LeftButton, id=1)
        self.Bind(wx.EVT_MENU, self.RightButton, id=2)
        self.Bind(wx.EVT_MENU, self.LeftText, id=1)
        acceltbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('Z'), 1),
                                        (wx.ACCEL_CTRL, ord('X'), 2)])
        self.SetAcceleratorTable(acceltbl)

        #ADD TWO BUTTONS TO MANIPULATE THE LEFT AND RIGHT BORDER
        self.button1 = wx.Button(self.panel, id=1, label='left', size=(30, 15))
        self.button2 = wx.Button(self.panel,
                                 id=2,
                                 label='right',
                                 size=(30, 15))
        self.button3 = wx.Button(self.panel,
                                 id=3,
                                 label='start',
                                 size=(40, 15))
        self.button1.SetFont(myfont)
        self.button1.SetBackgroundColour(back)
        self.button1.SetForegroundColour(FontColour)
        self.button2.SetFont(myfont)
        self.button2.SetBackgroundColour(back)
        self.button2.SetForegroundColour(FontColour)
        self.button3.SetFont(myfont)
        self.button3.SetBackgroundColour(back)
        self.button3.SetForegroundColour(FontColour)
        self.button1.Bind(wx.EVT_BUTTON, self.LeftButton)
        self.button2.Bind(wx.EVT_BUTTON, self.RightButton)
        #self.button1.Bind(wx.EVT_BUTTON, self.LeftText)
        #self.button2.Bind(wx.EVT_BUTTON, self.RightText)
        self.button3.Bind(wx.EVT_BUTTON, self.GetData)
        self.textleft = wx.TextCtrl(self.panel, id=3, size=(40, 20))
        self.textright = wx.TextCtrl(self.panel, id=4, size=(40, 20))
        self.textmid = wx.TextCtrl(self.panel, id=5, size=(40, 20))
        self.textcurr = wx.TextCtrl(self.panel, id=6, size=(40, 20))
        self.textleft.SetBackgroundColour((57, 59, 66))
        self.textleft.SetFont(myfont_small)
        self.textleft.SetForegroundColour(FontColour)
        self.textright.SetBackgroundColour((57, 59, 66))
        self.textright.SetFont(myfont_small)
        self.textright.SetForegroundColour(FontColour)
        self.textmid.SetBackgroundColour((57, 59, 66))
        self.textmid.SetFont(myfont_small)
        self.textmid.SetForegroundColour(FontColour)
        self.textcurr.SetBackgroundColour((57, 59, 66))
        self.textcurr.SetFont(myfont_small)
        self.textcurr.SetForegroundColour(FontColour)

        self.im = self.orim
        self.bm = self.im.ConvertToBitmap()

        self.wind = ImageWindow(self)
        self.wind.SetBitmap(self.im.ConvertToBitmap())
        self.wind.Refresh()
        self.wind.SetScrollbars(1, 0, self.im.GetWidth(), 200)
        wx.EVT_SLIDER(self.sld, self.sld.GetId(), self.sliderUpdate1)
        wx.EVT_SLIDER(self.sld1, self.sld1.GetId(), self.sliderUpdate2)
        #UPDATE THE TEXT ON LEFT CLICKING
        self.wind.Bind(wx.EVT_LEFT_UP, self.LeftText)
        self.wind.Bind(wx.EVT_RIGHT_UP, self.RightText)
        self.wind.Bind(wx.EVT_SCROLLWIN, self.MidText)
        self.wind.Bind(wx.EVT_LEFT_UP, self.MidText)
        self.wind.Bind(wx.EVT_RIGHT_UP, self.MidText)
        self.sld1.Bind(wx.EVT_SLIDER, self.sliderUpdate2)
        #self.wind.Bind(wx.EVT_TIMER, self.CurrText, self.wind.timer)
        self.wind.FitInside()
        #self.wind.SetScrollbars(1,0, self.im.GetWidth(), 200)

        sizer = wx.GridBagSizer(vgap=0, hgap=0)
        sizer.Add(self.button1, (0, 0), flag=wx.EXPAND)
        sizer.Add(self.button2, (0, 2), flag=wx.EXPAND)
        sizer.Add(self.button3, (0, 4), flag=wx.EXPAND)
        sizer.Add(self.textleft, (1, 4), flag=wx.EXPAND)
        sizer.Add(self.textright, (2, 4), flag=wx.EXPAND)
        sizer.Add(self.textmid, (3, 4), flag=wx.EXPAND)
        sizer.Add(self.textcurr, (4, 4), flag=wx.EXPAND)
        sizer.Add((0, 5), (1, 5))
        sizer.AddGrowableCol(0)
        sizer.AddGrowableCol(1)
        sizer.AddGrowableCol(2)
        sizer.AddGrowableCol(3)
        sizer.AddGrowableCol(4)
        sizer.AddGrowableCol(5)
        sizer.AddGrowableRow(0)
        sizer.AddGrowableRow(1)
        sizer.AddGrowableRow(2)
        sizer.AddGrowableRow(3)
        sizer.SetMinSize((100, 100))
        sizer.Add(self.sld, (1, 0), (4, 1), flag=wx.EXPAND)
        sizer.Add(self.sld1, (1, 2), (4, 1), flag=wx.EXPAND)
        self.panel.SetSizer(sizer)
        self.panel.SetMinSize((100, 200))
        Bigsizer = wx.BoxSizer()
        self.wind.SetMinSize((150, 200))
        Bigsizer.Add(self.wind, proportion=3, flag=wx.ALL | wx.EXPAND)
        Bigsizer.Add(self.panel, proportion=2, flag=wx.ALL | wx.EXPAND)
        self.SetSizer(Bigsizer)
        self.SetBackgroundColour(Background)