def __init__(self, parent): self.us_to_jp_map = {} self.monster_data = {} wx.Panel.__init__(self, parent) grid = wx.GridBagSizer(hgap=5, vgap=10) config = wx.ConfigBase.Get() host = config.Read("host") or socket.gethostbyname(socket.gethostname()) start_instructions = wx.StaticText(self, label="Just the first time, you need to add the HTTPS certificate to your iOS/Android device. To do this, go to your wifi settings and set up a manual HTTP proxy. Set the server to '%s' and the port to 8080. Then visit http://mitm.it in Safari/Chrome, click the link for your device, and install the configuration profile when asked. After this is done, turn off the HTTP proxy." % host) start_instructions.Wrap(580) grid.Add(start_instructions, pos=(0,0)) dns_instructions = wx.StaticText(self, label="To synchronize your box with padherder, enter your padherder username and password in Settings. Then go to your wifi settings and change your DNS server to '%s'. Then press the home button. If you switch to the DNS Proxy Log tab, you should see a bunch of log lines. Make sure Puzzle and Dragons is completely closed, and re-open it. Once you get in game, close PAD completely again and restore your DNS settings." % host) dns_instructions.Wrap(580) grid.Add(dns_instructions, pos=(1,0)) status_label = wx.StaticText(self, label="Status:") grid.Add(status_label, pos=(2,0)) self.status_ctrl = wx.TextCtrl(self, wx.ID_ANY, size=(400,300), style = wx.TE_MULTILINE|wx.TE_READONLY) self.Bind(custom_events.EVT_STATUS_EVENT, self.onStatusEvent) if not config.Read("username"): self.status_ctrl.AppendText("You need to set your padherder username in Settings\n") if not config.Read("password"): self.status_ctrl.AppendText("You need to set your padherder password in Settings\n") grid.Add(self.status_ctrl, pos=(3,0), span=(1,2)) if is_out_of_date(self): updateCtrl = HyperLinkCtrl(self, wx.ID_ANY, label="An updated version is available", URL="https://github.com/jgoldshlag/padherder_proxy") grid.Add(updateCtrl, pos=(4,0), span=(1,2)) self.SetSizer(grid)
def __init__(self, parent): wx.Panel.__init__(self, parent) self.db = Database.db.Db() # create some sizers mainSizer = wx.BoxSizer(wx.VERTICAL) grid = wx.GridBagSizer(hgap=5, vgap=5) hSizer = wx.BoxSizer(wx.HORIZONTAL) self.webview = wx.html2.WebView.New(self, size=(340, 390)) # data table self.table = wx.grid.Grid(self, size=(340, 385)) self.table.CreateGrid(0, 3) self.table.SetColLabelValue(0, "Id") self.table.SetColLabelValue(1, "Content") self.table.SetColLabelValue(2, "Date") self.btnsavecanvas = wx.Button(self, label="Save Canvas") self.Bind(wx.EVT_BUTTON, self.OnClickSaveCanvas, self.btnsavecanvas) self.btnclearcanvas = wx.Button(self, label="Clear Canvas") self.Bind(wx.EVT_BUTTON, self.OnClickClearCanvas, self.btnclearcanvas) self.btnrestorecanvas = wx.Button(self, label="Restore Canvas") self.Bind(wx.EVT_BUTTON, self.OnClickRestoreCanvas, self.btnrestorecanvas) sz = wx.BoxSizer(wx.HORIZONTAL) self.lblname = wx.StaticText(self, label="Http Url:") self.editname = wx.TextCtrl(self, value=os.environ.get( "APP_COURSE_URL", "Your Url Here"), size=(450, -1)) self.button_load = wx.Button(self, label="Load", size=(80, -1)) self.Bind(wx.EVT_BUTTON, self.OnClickLoad, self.button_load) sz.Add(self.lblname, 0) sz.Add(self.editname, 1, wx.EXPAND | wx.ALL) sz.Add(self.button_load, 2, wx.SHAPED | wx.ALL) mainSizer.Add(sz, 0, wx.TOP, 15) grid.Add(self.webview, pos=(1, 0)) grid.Add(self.table, pos=(1, 1)) hSizer.Add(grid, 0, wx.ALL, 5) btnsizer = wx.BoxSizer(wx.HORIZONTAL) btnsizer.Add(self.btnsavecanvas, 1) btnsizer.Add(self.btnclearcanvas, 1) btnsizer.Add(self.btnrestorecanvas, 1) mainSizer.Add(hSizer, 1, wx.ALL, 1) mainSizer.Add(btnsizer, 2, wx.ALL) self.SetSizerAndFit(mainSizer)
def __init__(self, parent, settings, filename): self.settings = settings self.dirname = settings.dirScans self.filename = filename wx.Dialog.__init__(self, parent=parent, title="Compare plots", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.MAXIMIZE_BOX) self.graph = PanelGraphCompare(self, self.__on_cursor) self.graph.show_plot1(settings.compareOne) self.graph.show_plot2(settings.compareTwo) self.graph.show_plotdiff(settings.compareDiff) textPlot1 = wx.StaticText(self, label='Plot 1') linePlot1 = PanelLine(self, wx.BLUE) self.checkOne = wx.CheckBox(self, wx.ID_ANY) self.checkOne.SetValue(settings.compareOne) self.buttonPlot1 = wx.Button(self, wx.ID_ANY, 'Load...') self.textPlot1 = wx.StaticText(self, label="<None>") self.textLoc1 = wx.StaticText(self, label='\n') self.Bind(wx.EVT_BUTTON, self.__on_load_plot, self.buttonPlot1) textPlot2 = wx.StaticText(self, label='Plot 2') linePlot2 = PanelLine(self, wx.GREEN) self.checkTwo = wx.CheckBox(self, wx.ID_ANY) self.checkTwo.SetValue(settings.compareTwo) self.buttonPlot2 = wx.Button(self, wx.ID_ANY, 'Load...') self.textPlot2 = wx.StaticText(self, label="<None>") self.textLoc2 = wx.StaticText(self, label='\n') self.Bind(wx.EVT_BUTTON, self.__on_load_plot, self.buttonPlot2) textPlotDiff = wx.StaticText(self, label='Difference') linePlotDiff = PanelLine(self, wx.RED) self.checkDiff = wx.CheckBox(self, wx.ID_ANY) self.checkDiff.SetValue(settings.compareDiff) self.textLocDiff = wx.StaticText(self, label='\n') font = textPlot1.GetFont() fontSize = font.GetPointSize() font.SetPointSize(fontSize + 4) textPlot1.SetFont(font) textPlot2.SetFont(font) textPlotDiff.SetFont(font) fontStyle = font.GetStyle() fontWeight = font.GetWeight() font = wx.Font(fontSize, wx.FONTFAMILY_MODERN, fontStyle, fontWeight) self.textLoc1.SetFont(font) self.textLoc2.SetFont(font) self.textLocDiff.SetFont(font) buttonClose = wx.Button(self, wx.ID_CLOSE, 'Close') self.Bind(wx.EVT_CHECKBOX, self.__on_check1, self.checkOne) self.Bind(wx.EVT_CHECKBOX, self.__on_check2, self.checkTwo) self.Bind(wx.EVT_CHECKBOX, self.__on_check_diff, self.checkDiff) self.Bind(wx.EVT_BUTTON, self.__on_close, buttonClose) grid = wx.GridBagSizer(5, 5) grid.Add(textPlot1, pos=(0, 0)) grid.Add(linePlot1, pos=(0, 1), flag=wx.EXPAND) grid.Add(self.checkOne, pos=(0, 2), flag=wx.ALIGN_CENTER_VERTICAL) grid.Add(self.buttonPlot1, pos=(1, 0)) grid.Add(self.textPlot1, pos=(2, 0)) grid.Add(self.textLoc1, pos=(3, 0)) grid.Add(wx.StaticLine(self), pos=(5, 0), span=(1, 3), flag=wx.EXPAND) grid.Add(textPlot2, pos=(6, 0)) grid.Add(linePlot2, pos=(6, 1), flag=wx.EXPAND) grid.Add(self.checkTwo, pos=(6, 2), flag=wx.ALIGN_CENTER_VERTICAL) grid.Add(self.buttonPlot2, pos=(7, 0)) grid.Add(self.textPlot2, pos=(8, 0)) grid.Add(self.textLoc2, pos=(9, 0)) grid.Add(wx.StaticLine(self), pos=(11, 0), span=(1, 3), flag=wx.EXPAND) grid.Add(textPlotDiff, pos=(12, 0)) grid.Add(linePlotDiff, pos=(12, 1), flag=wx.EXPAND) grid.Add(self.checkDiff, pos=(12, 2), flag=wx.ALIGN_CENTER_VERTICAL) grid.Add(self.textLocDiff, pos=(13, 0)) sizerV = wx.BoxSizer(wx.HORIZONTAL) sizerV.Add(self.graph, 1, wx.EXPAND) sizerV.Add(grid, 0, wx.ALL, border=5) sizerH = wx.BoxSizer(wx.VERTICAL) sizerH.Add(sizerV, 1, wx.EXPAND, border=5) sizerH.Add(buttonClose, 0, wx.ALL | wx.ALIGN_RIGHT, border=5) self.SetSizerAndFit(sizerH) close_modeless()
def __init__(self, parent, scanInfo): wx.Dialog.__init__(self, parent, title="Scan Properties") self.scanInfo = scanInfo box = wx.BoxSizer(wx.VERTICAL) grid = wx.GridBagSizer(0, 0) boxScan = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, "Scan"), wx.HORIZONTAL) gridScan = wx.GridBagSizer(0, 0) textDesc = wx.StaticText(self, label="Description") gridScan.Add(textDesc, (0, 0), (1, 1), wx.ALL, 5) self.textCtrlDesc = wx.TextCtrl(self, value=scanInfo.desc, style=wx.TE_MULTILINE) gridScan.Add(self.textCtrlDesc, (0, 1), (2, 2), wx.ALL | wx.EXPAND, 5) textStart = wx.StaticText(self, label="Start") gridScan.Add(textStart, (2, 0), (1, 1), wx.ALL, 5) textCtrlStart = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.start is not None: textCtrlStart.SetValue(str(scanInfo.start)) gridScan.Add(textCtrlStart, (2, 1), (1, 1), wx.ALL, 5) textMHz1 = wx.StaticText(self, wx.ID_ANY, label="MHz") gridScan.Add(textMHz1, (2, 2), (1, 1), wx.ALL, 5) textStop = wx.StaticText(self, label="Stop") gridScan.Add(textStop, (3, 0), (1, 1), wx.ALL, 5) textCtrlStop = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.stop is not None: textCtrlStop.SetValue(str(scanInfo.stop)) gridScan.Add(textCtrlStop, (3, 1), (1, 1), wx.ALL, 5) textMHz2 = wx.StaticText(self, label="MHz") gridScan.Add(textMHz2, (3, 2), (1, 1), wx.ALL, 5) textDwell = wx.StaticText(self, label="Dwell") gridScan.Add(textDwell, (4, 0), (1, 1), wx.ALL, 5) textCtrlDwell = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.dwell is not None: textCtrlDwell.SetValue(str(scanInfo.dwell)) gridScan.Add(textCtrlDwell, (4, 1), (1, 1), wx.ALL, 5) textSeconds = wx.StaticText(self, label="seconds") gridScan.Add(textSeconds, (4, 2), (1, 1), wx.ALL, 5) textNfft = wx.StaticText(self, label="FFT Size") gridScan.Add(textNfft, (5, 0), (1, 1), wx.ALL, 5) textCtrlNfft = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.nfft is not None: textCtrlNfft.SetValue(str(scanInfo.nfft)) gridScan.Add(textCtrlNfft, (5, 1), (1, 1), wx.ALL, 5) textRbw = wx.StaticText(self, label="RBW") gridScan.Add(textRbw, (6, 0), (1, 1), wx.ALL, 5) rbw = ((SAMPLE_RATE / scanInfo.nfft) / 1000.0) * 2.0 textCtrlStop = wx.TextCtrl(self, value="{0:.3f}".format(rbw), style=wx.TE_READONLY) gridScan.Add(textCtrlStop, (6, 1), (1, 1), wx.ALL, 5) textKHz = wx.StaticText(self, label="kHz") gridScan.Add(textKHz, (6, 2), (1, 1), wx.ALL, 5) textTime = wx.StaticText(self, label="First scan") gridScan.Add(textTime, (7, 0), (1, 1), wx.ALL, 5) textCtrlTime = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.timeFirst is not None: textCtrlTime.SetValue(format_time(scanInfo.timeFirst, True)) gridScan.Add(textCtrlTime, (7, 1), (1, 1), wx.ALL, 5) textTime = wx.StaticText(self, label="Last scan") gridScan.Add(textTime, (8, 0), (1, 1), wx.ALL, 5) textCtrlTime = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.timeLast is not None: textCtrlTime.SetValue(format_time(scanInfo.timeLast, True)) gridScan.Add(textCtrlTime, (8, 1), (1, 1), wx.ALL, 5) textLat = wx.StaticText(self, label="Latitude") gridScan.Add(textLat, (9, 0), (1, 1), wx.ALL, 5) self.textCtrlLat = wx.TextCtrl(self, value="Unknown") self.textCtrlLat.SetValidator(ValidatorCoord(True)) if scanInfo.lat is not None: self.textCtrlLat.SetValue(str(scanInfo.lat)) gridScan.Add(self.textCtrlLat, (9, 1), (1, 1), wx.ALL, 5) textLon = wx.StaticText(self, label="Longitude") gridScan.Add(textLon, (10, 0), (1, 1), wx.ALL, 5) self.textCtrlLon = wx.TextCtrl(self, value="Unknown") self.textCtrlLon.SetValidator(ValidatorCoord(False)) if scanInfo.lon is not None: self.textCtrlLon.SetValue(str(scanInfo.lon)) gridScan.Add(self.textCtrlLon, (10, 1), (1, 1), wx.ALL, 5) boxScan.Add(gridScan, 0, 0, 5) grid.Add(boxScan, (0, 0), (1, 1), wx.ALL | wx.EXPAND, 5) boxDevice = wx.StaticBoxSizer(wx.StaticBox(self, label="Device"), wx.VERTICAL) gridDevice = wx.GridBagSizer(0, 0) textName = wx.StaticText(self, label="Name") gridDevice.Add(textName, (0, 0), (1, 1), wx.ALL, 5) textCtrlName = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.name is not None: textCtrlName.SetValue(scanInfo.name) gridDevice.Add(textCtrlName, (0, 1), (1, 2), wx.ALL | wx.EXPAND, 5) textTuner = wx.StaticText(self, label="Tuner") gridDevice.Add(textTuner, (1, 0), (1, 1), wx.ALL, 5) textCtrlTuner = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.tuner != -1: textCtrlTuner.SetValue(TUNER[scanInfo.tuner]) gridDevice.Add(textCtrlTuner, (1, 1), (1, 2), wx.ALL | wx.EXPAND, 5) testGain = wx.StaticText(self, label="Gain") gridDevice.Add(testGain, (2, 0), (1, 1), wx.ALL, 5) textCtrlGain = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.gain is not None: textCtrlGain.SetValue(str(scanInfo.gain)) gridDevice.Add(textCtrlGain, (2, 1), (1, 1), wx.ALL, 5) textDb = wx.StaticText(self, label="dB") gridDevice.Add(textDb, (2, 2), (1, 1), wx.ALL, 5) textLo = wx.StaticText(self, label="LO") gridDevice.Add(textLo, (3, 0), (1, 1), wx.ALL, 5) textCtrlLo = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.lo is not None: textCtrlLo.SetValue(str(scanInfo.lo)) gridDevice.Add(textCtrlLo, (3, 1), (1, 1), wx.ALL, 5) textMHz3 = wx.StaticText(self, label="MHz") gridDevice.Add(textMHz3, (3, 2), (1, 1), wx.ALL, 5) textCal = wx.StaticText(self, label="Calibration") gridDevice.Add(textCal, (4, 0), (1, 1), wx.ALL, 5) textCtrlCal = wx.TextCtrl(self, value="Unknown", style=wx.TE_READONLY) if scanInfo.calibration is not None: textCtrlCal.SetValue(str(scanInfo.calibration)) gridDevice.Add(textCtrlCal, (4, 1), (1, 1), wx.ALL, 5) testPpm = wx.StaticText(self, label="ppm") gridDevice.Add(testPpm, (4, 2), (1, 1), wx.ALL, 5) boxDevice.Add(gridDevice, 1, wx.EXPAND, 5) grid.Add(boxDevice, (1, 0), (1, 1), wx.ALL | wx.EXPAND, 5) box.Add(grid, 1, wx.ALL | wx.EXPAND, 5) sizerButtons = wx.StdDialogButtonSizer() buttonOk = wx.Button(self, wx.ID_OK) buttonCancel = wx.Button(self, wx.ID_CANCEL) sizerButtons.AddButton(buttonOk) sizerButtons.AddButton(buttonCancel) sizerButtons.Realize() self.Bind(wx.EVT_BUTTON, self.__on_ok, buttonOk) box.Add(sizerButtons, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.SetSizerAndFit(box)
def __init__(self, parent): wx.Panel.__init__(self, parent) config = wx.ConfigBase.Get() host = config.Read("host") or socket.gethostbyname(socket.gethostname()) grid = wx.GridBagSizer(hgap=5, vgap=5) lblUsername = wx.StaticText(self, label="Padherder Username:"******"username"), size=(140,-1)) self.Bind(wx.EVT_TEXT, self.onUsernameChange, self.editUsername) grid.Add(self.editUsername, pos=(0,1)) lblUsername = wx.StaticText(self, label="Padherder Password:"******"password"), size=(140,-1), style=wx.TE_PASSWORD) self.Bind(wx.EVT_TEXT, self.onPasswordChange, self.editPassword) grid.Add(self.editPassword, pos=(1,1)) lblHost = wx.StaticText(self, label="IP Address to bind to:") grid.Add(lblHost, pos=(2,0)) self.editHost = wx.TextCtrl(self, value=config.Read("host"), size=(140,-1)) self.Bind(wx.EVT_TEXT, self.onHostChange, self.editHost) grid.Add(self.editHost, pos=(2,1)) lblHostHelp = wx.StaticText(self, label="Leave blank, unless your computer has multiple IPs. Restart app after changing this") lblHostHelp.Wrap(580) grid.Add(lblHostHelp, pos=(3,0), span=(1,2)) lblDNSPort = wx.StaticText(self, label="Port for DNS Proxy:") grid.Add(lblDNSPort, pos=(4,0)) self.editDNSPort = wx.TextCtrl(self, value=config.Read("dnsport"), size=(140,-1)) self.Bind(wx.EVT_TEXT, self.onDNSPortChange, self.editDNSPort) grid.Add(self.editDNSPort, pos=(4,1)) export = config.Read("dnsport") or "<padproxydnsport>" lblDNSPortHelp = wx.StaticText(self, label="Leave blank, unless you need to bind the DNS Proxy to a different port (ie: for non-root use on a *nix system.) You will need to have a proxy to pass DNS requests from UDP port 53 to this port (ex: sudo dnsmasq -R -a=%s -S=%s#%s). Restart app after changing this." % (host, host, export)) lblDNSPortHelp.Wrap(580) grid.Add(lblDNSPortHelp, pos=(5,0), span=(1,2)) lblHTTPSPort = wx.StaticText(self, label="Port for HTTPS Proxy:") grid.Add(lblHTTPSPort, pos=(6,0)) self.editHTTPSPort = wx.TextCtrl(self, value=config.Read("httpsport"), size=(140,-1)) self.Bind(wx.EVT_TEXT, self.onHTTPSPortChange, self.editHTTPSPort) grid.Add(self.editHTTPSPort, pos=(6,1)) export = config.Read("httpsport") or "<padproxyhttpsport>" lblHTTPSPortHelp = wx.StaticText(self, label="Leave blank, unless you need to bind the HTTPS Proxy a different port (ie: for non-root use on a *nix system.) You will need to have some way to forward TCP port 443 to the this port (ex: sudo socat TCP4-LISTEN:443,bind=%s,su=nobody,fork TCP4:%s:%s). Restart app after changing this." % (host, host, export)) lblHTTPSPortHelp.Wrap(580) grid.Add(lblHTTPSPortHelp, pos=(7,0), span=(1,2)) lblCustomCapture = wx.StaticText(self, label="Custom URLs to capture") grid.Add(lblCustomCapture, pos=(8,0)) self.editCustomCapture = wx.TextCtrl(self, value=config.Read("customcapture"), size=(140,-1)) self.Bind(wx.EVT_TEXT, self.onCustomCaptureChange, self.editCustomCapture) grid.Add(self.editCustomCapture, pos=(8,1)) lblCustomCaptureHelp = wx.StaticText(self, label="Leave blank, unless you are raijinili. Comma separated list of actions to capture.") lblCustomCaptureHelp.Wrap(580) grid.Add(lblCustomCaptureHelp, pos=(9,0), span=(1,2)) self.SetSizer(grid)
def __init__(self, parent, device): self.device = device self.threadLocation = None self.raw = '' wx.Dialog.__init__(self, parent=parent, title='GPS Test') textLat = wx.StaticText(self, label='Longitude') self.textLat = wx.TextCtrl(self, style=wx.TE_READONLY) textLon = wx.StaticText(self, label='Latitude') self.textLon = wx.TextCtrl(self, style=wx.TE_READONLY) textAlt = wx.StaticText(self, label='Altitude') self.textAlt = wx.TextCtrl(self, style=wx.TE_READONLY) textSats = wx.StaticText(self, label='Satellites') self.textSats = wx.TextCtrl(self, style=wx.TE_READONLY) textRaw = wx.StaticText(self, label='Raw output') self.textRaw = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_READONLY) textLevel = wx.StaticText(self, label='Level') self.satLevel = SatLevel(self) self.buttonStart = wx.Button(self, label='Start') self.Bind(wx.EVT_BUTTON, self.__on_start, self.buttonStart) self.buttonStop = wx.Button(self, label='Stop') self.Bind(wx.EVT_BUTTON, self.__on_stop, self.buttonStop) self.buttonStop.Disable() buttonOk = wx.Button(self, wx.ID_OK) self.Bind(wx.EVT_BUTTON, self.__on_ok, buttonOk) grid = wx.GridBagSizer(10, 10) grid.Add(textLat, pos=(0, 0), flag=wx.ALL, border=5) grid.Add(self.textLat, pos=(0, 1), span=(1, 2), flag=wx.ALL, border=5) grid.Add(textLon, pos=(1, 0), flag=wx.ALL, border=5) grid.Add(self.textLon, pos=(1, 1), span=(1, 2), flag=wx.ALL, border=5) grid.Add(textAlt, pos=(2, 0), flag=wx.ALL, border=5) grid.Add(self.textAlt, pos=(2, 1), span=(1, 2), flag=wx.ALL, border=5) grid.Add(textSats, pos=(3, 0), flag=wx.ALL, border=5) grid.Add(self.textSats, pos=(3, 1), span=(1, 2), flag=wx.ALL, border=5) grid.Add(textLevel, pos=(0, 3), flag=wx.ALL, border=5) grid.Add(self.satLevel, pos=(1, 3), span=(3, 2), flag=wx.ALL, border=5) grid.Add(textRaw, pos=(4, 0), flag=wx.ALL, border=5) grid.Add(self.textRaw, pos=(5, 0), span=(5, 5), flag=wx.ALL | wx.EXPAND, border=5) grid.Add(self.buttonStart, pos=(10, 2), flag=wx.ALL, border=5) grid.Add(self.buttonStop, pos=(10, 3), flag=wx.ALL | wx.ALIGN_RIGHT, border=5) grid.Add(buttonOk, pos=(11, 4), flag=wx.ALL | wx.ALIGN_RIGHT, border=5) self.SetSizerAndFit(grid) self.queue = Queue.Queue() self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.__on_timer, self.timer) self.timer.Start(self.POLL)
def __init__(self, parent, device): self.device = device ports = get_serial_ports() ports.append(device.resource) self.ports = list(set(ports)) wx.Dialog.__init__(self, parent=parent, title='Serial port settings') textPort = wx.StaticText(self, label='Port') self.comboPort = wx.ComboBox(self, choices=self.ports, style=wx.TE_PROCESS_ENTER) self.comboPort.SetSelection(self.ports.index(device.resource)) textBaud = wx.StaticText(self, label='Baud rate') self.choiceBaud = wx.Choice(self, choices=[str(baud) for baud in device.get_bauds()]) self.choiceBaud.SetSelection(device.get_bauds().index(device.baud)) textByte = wx.StaticText(self, label='Byte size') self.choiceBytes = wx.Choice(self, choices=[str(byte) for byte in DeviceGPS.BYTES]) self.choiceBytes.SetSelection(DeviceGPS.BYTES.index(device.bytes)) textParity = wx.StaticText(self, label='Parity') self.choiceParity = wx.Choice(self, choices=DeviceGPS.PARITIES) self.choiceParity.SetSelection(DeviceGPS.PARITIES.index(device.parity)) textStop = wx.StaticText(self, label='Stop bits') self.choiceStops = wx.Choice(self, choices=[str(stop) for stop in DeviceGPS.STOPS]) self.choiceStops.SetSelection(DeviceGPS.STOPS.index(device.stops)) textSoft = wx.StaticText(self, label='Software flow control') self.checkSoft = wx.CheckBox(self) self.checkSoft.SetValue(device.soft) buttonOk = wx.Button(self, wx.ID_OK) buttonCancel = wx.Button(self, wx.ID_CANCEL) sizerButtons = wx.StdDialogButtonSizer() sizerButtons.AddButton(buttonOk) sizerButtons.AddButton(buttonCancel) sizerButtons.Realize() self.Bind(wx.EVT_BUTTON, self.__on_ok, buttonOk) grid = wx.GridBagSizer(10, 10) grid.Add(textPort, pos=(0, 0), flag=wx.ALL) grid.Add(self.comboPort, pos=(0, 1), flag=wx.ALL) grid.Add(textBaud, pos=(1, 0), flag=wx.ALL) grid.Add(self.choiceBaud, pos=(1, 1), flag=wx.ALL) grid.Add(textByte, pos=(2, 0), flag=wx.ALL) grid.Add(self.choiceBytes, pos=(2, 1), flag=wx.ALL) grid.Add(textParity, pos=(3, 0), flag=wx.ALL) grid.Add(self.choiceParity, pos=(3, 1), flag=wx.ALL) grid.Add(textStop, pos=(4, 0), flag=wx.ALL) grid.Add(self.choiceStops, pos=(4, 1), flag=wx.ALL) grid.Add(textSoft, pos=(5, 0), flag=wx.ALL) grid.Add(self.checkSoft, pos=(5, 1), flag=wx.ALL) box = wx.BoxSizer(wx.VERTICAL) box.Add(grid, flag=wx.ALL, border=10) box.Add(sizerButtons, flag=wx.ALL | wx.ALIGN_RIGHT, border=10) self.SetSizerAndFit(box)
def __init__(self,parent): wx.Panel.__init__(self,parent,id=3,pos=(0,220),size=(330,300)) #self.SetBackgroundColour('Green') vbox = wx.BoxSizer(wx.VERTICAL) hboxBottom = wx.BoxSizer(wx.HORIZONTAL) grid = wx.GridSizer(7,2,6,0) st1 = wx.StaticText(self, -1, 'First Name') self.firstInput = wx.TextCtrl(self, -1) self.firstInput.Bind(wx.EVT_KEY_UP, self.checkValid) grid.Add(st1, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.firstInput, 0, wx.ALIGN_RIGHT | wx.EXPAND) st2 = wx.StaticText(self, -1, 'Last Name') self.lastInput = wx.TextCtrl(self, -1) self.lastInput.Bind(wx.EVT_KEY_UP, self.checkValid) grid.Add(st2, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.lastInput, 0, wx.ALIGN_RIGHT | wx.EXPAND) st3 = wx.StaticText(self, -1, 'Email') self.emailInput = wx.TextCtrl(self, -1) self.emailInput.Bind(wx.EVT_KEY_UP, self.checkValid) grid.Add(st3, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.emailInput, 0, wx.ALIGN_RIGHT | wx.EXPAND) st4 = wx.StaticText(self, -1, 'Username') self.usernameInput = wx.TextCtrl(self, -1) self.usernameInput.Bind(wx.EVT_KEY_UP, self.checkValid) grid.Add(st4, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.usernameInput, 0, wx.ALIGN_RIGHT | wx.EXPAND) st5 = wx.StaticText(self, -1, 'Password') self.passwordInput = wx.TextCtrl(self, -1, style = wx.TE_PASSWORD) self.passwordInput.Bind(wx.EVT_KEY_UP, self.checkValid) grid.Add(st5, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.passwordInput, 0, wx.ALIGN_RIGHT | wx.EXPAND) st6 = wx.StaticText(self, -1, 'Confirm') self.confirmInput = wx.TextCtrl(self, -1, style = wx.TE_PASSWORD) self.confirmInput.Bind(wx.EVT_KEY_UP, self.checkValid) grid.Add(st6, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.confirmInput, 0, wx.ALIGN_RIGHT | wx.EXPAND) st7 = wx.StaticText(self, -1, 'Department') self.departmentCombo = wx.ComboBox(self, -1) self.firstInput.Bind(wx.EVT_COMBOBOX, self.checkValid) grid.Add(st7, 0, wx.ALIGN_CENTER_VERTICAL) grid.Add(self.departmentCombo, 0, wx.ALIGN_RIGHT | wx.EXPAND) self.addBtn = wx.Button(self, -1, "Add User", size=(100,-1)) self.addBtn.Disable() self.addBtn.Bind(wx.EVT_BUTTON, self.onAdd) self.cancelBtn = wx.Button(self, -1, "Cancel") self.cancelBtn.Bind(wx.EVT_BUTTON, self.onCancel) vbox.Add(grid, 0, wx.ALL | wx.EXPAND, 10) hboxBottom.Add(self.addBtn, 0, wx.RIGHT,10) hboxBottom.Add(self.cancelBtn, 0, wx.RIGHT,10) vbox.Add(hboxBottom, 0, wx.BOTTOM|wx.ALIGN_RIGHT,10) self.SetAutoLayout(True) self.SetSizer(vbox) self.Layout()
def create_widgets(self): panel = wx.Panel(self) self.panel = wx.Panel(panel) self.graph = PanelGraph(panel, self) self.buttonStart = wx.Button(self.panel, wx.ID_ANY, 'Start') self.buttonStop = wx.Button(self.panel, wx.ID_ANY, 'Stop') self.buttonStart.SetToolTip(wx.ToolTip('Start scan')) self.buttonStop.SetToolTip(wx.ToolTip('Stop scan')) self.Bind(wx.EVT_BUTTON, self.on_start, self.buttonStart) self.Bind(wx.EVT_BUTTON, self.on_stop, self.buttonStop) textRange = wx.StaticText(self.panel, label="Range (MHz)", style=wx.ALIGN_CENTER) textStart = wx.StaticText(self.panel, label="Start") textStop = wx.StaticText(self.panel, label="Stop") self.spinCtrlStart = wx.SpinCtrl(self.panel) self.spinCtrlStop = wx.SpinCtrl(self.panel) self.spinCtrlStart.SetToolTip(wx.ToolTip('Start frequency')) self.spinCtrlStop.SetToolTip(wx.ToolTip('Stop frequency')) self.spinCtrlStart.SetRange(F_MIN, F_MAX - 1) self.spinCtrlStop.SetRange(F_MIN + 1, F_MAX) self.set_range() self.Bind(wx.EVT_SPINCTRL, self.on_spin, self.spinCtrlStart) self.Bind(wx.EVT_SPINCTRL, self.on_spin, self.spinCtrlStop) textDwell = wx.StaticText(self.panel, label="Dwell") self.choiceDwell = wx.Choice(self.panel, choices=DWELL[::2]) self.choiceDwell.SetToolTip(wx.ToolTip('Scan time per step')) self.choiceDwell.SetSelection(DWELL[1::2].index(0.1)) self.checkUpdate = wx.CheckBox(self.panel, wx.ID_ANY, "Continuous update") self.checkUpdate.SetToolTip(wx.ToolTip('Very slow, not recommended')) self.checkUpdate.SetValue(self.update) self.Bind(wx.EVT_CHECKBOX, self.on_check_update, self.checkUpdate) self.checkGrid = wx.CheckBox(self.panel, wx.ID_ANY, "Grid") self.checkGrid.SetToolTip(wx.ToolTip('Draw grid')) self.checkGrid.SetValue(self.grid) self.Bind(wx.EVT_CHECKBOX, self.on_check_grid, self.checkGrid) grid = wx.GridBagSizer(5, 5) grid.Add(self.buttonStart, pos=(0, 0), span=(2, 1), flag=wx.ALIGN_CENTER) grid.Add(self.buttonStop, pos=(0, 1), span=(2, 1), flag=wx.ALIGN_CENTER) grid.Add((20, 1), pos=(0, 2)) grid.Add(textRange, pos=(0, 3), span=(1, 4), flag=wx.ALIGN_CENTER) grid.Add(textStart, pos=(1, 3), flag=wx.ALIGN_CENTER) grid.Add(self.spinCtrlStart, pos=(1, 4)) grid.Add(textStop, pos=(1, 5), flag=wx.ALIGN_CENTER) grid.Add(self.spinCtrlStop, pos=(1, 6)) grid.Add((20, 1), pos=(0, 7)) grid.Add(textDwell, pos=(0, 8), flag=wx.ALIGN_CENTER) grid.Add(self.choiceDwell, pos=(1, 8), flag=wx.ALIGN_CENTER) grid.Add((20, 1), pos=(0, 9)) grid.Add(self.checkUpdate, pos=(0, 10)) grid.Add(self.checkGrid, pos=(1, 10)) self.panel.SetSizer(grid) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.graph, 1, wx.EXPAND) sizer.Add(self.panel, 0, wx.ALIGN_CENTER) panel.SetSizer(sizer)