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)
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)
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()
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)
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()
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()
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))
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
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())
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)
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)
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)
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)
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)
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)
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)