def Configure(self, direction=0, initSpeed = 60, maxSpeed = 7000, accelerationFactor = 3, useAlternateMethod=False): text = self.text panel = eg.ConfigPanel() direction = float(direction) valueCtrl = panel.SpinNumCtrl(float(direction), min=0, max=360) panel.AddLine(text.text1, valueCtrl, text.text2) initSpeedLabel = wx.StaticText(panel, -1, text.text3) initSpeedSpin = eg.SpinIntCtrl(panel, -1, initSpeed, 10, 2000) maxSpeedLabel = wx.StaticText(panel, -1, text.text4) maxSpeedSpin = eg.SpinIntCtrl(panel, -1, maxSpeed, 4000, 32000) accelerationFactorLabel = wx.StaticText(panel, -1, text.text5) accelerationFactorSpin = eg.SpinIntCtrl(panel, -1, accelerationFactor, 1, 200) eg.EqualizeWidths((initSpeedLabel, maxSpeedLabel, accelerationFactorLabel)) panel.AddLine(initSpeedLabel, initSpeedSpin) panel.AddLine(maxSpeedLabel, maxSpeedSpin) panel.AddLine(accelerationFactorLabel, accelerationFactorSpin) uAMCB = panel.CheckBox(useAlternateMethod, text.label_AM) panel.AddLine(uAMCB) while panel.Affirmed(): panel.SetResult( valueCtrl.GetValue(), initSpeedSpin.GetValue(), maxSpeedSpin.GetValue(), accelerationFactorSpin.GetValue(), uAMCB.GetValue(), )
def Configure(self, x=0, y=0, displayNumber=None): text = self.text panel = eg.ConfigPanel() # enableDisplay = displayNumber is not None enableX = x is not None enableY = y is not None displayLabel = wx.StaticText(panel, -1, text.display) # displayCheckBox = wx.CheckBox(panel, -1, text.display) # displayCheckBox.SetValue(enableDisplay) if displayNumber is None: displayNumber = 0 displayChoice = eg.DisplayChoice(panel, displayNumber) # displayChoice.Enable(enableDisplay) xCheckBox = wx.CheckBox(panel, -1, text.text1) xCheckBox.SetValue(enableX) xCtrl = eg.SpinIntCtrl(panel, -1, 0 if not enableX else x, min=-32768, max=32767) xCtrl.Enable(enableX) yCheckBox = wx.CheckBox(panel, -1, text.text3) yCheckBox.SetValue(enableY) yCtrl = eg.SpinIntCtrl(panel, -1, 0 if not enableY else y, min=-32768, max=32767) yCtrl.Enable(enableY) monsCtrl = eg.MonitorsCtrl(panel, background=(224, 238, 238)) sizer = wx.GridBagSizer(vgap=6, hgap=5) sizer.Add(xCheckBox, (0, 0), (1, 1)) sizer.Add(xCtrl, (0, 1), (1, 1)) sizer.Add(wx.StaticText(panel, -1, text.text2), (0, 2), (1, 1)) sizer.Add(yCheckBox, (1, 0), (1, 1)) sizer.Add(yCtrl, (1, 1), (1, 1)) sizer.Add(wx.StaticText(panel, -1, text.text2), (1, 2), (1, 1)) sizer.Add(displayLabel, (2, 0), (1, 1), flag=wx.TOP, border=18) sizer.Add(displayChoice, (2, 1), (1, 2), flag=wx.TOP, border=17) panel.sizer.Add(sizer, 1, wx.EXPAND) panel.sizer.Add(monsCtrl) def HandleXCheckBox(event): xCtrl.Enable(event.IsChecked()) event.Skip() xCheckBox.Bind(wx.EVT_CHECKBOX, HandleXCheckBox) def HandleYCheckBox(event): yCtrl.Enable(event.IsChecked()) event.Skip() yCheckBox.Bind(wx.EVT_CHECKBOX, HandleYCheckBox) while panel.Affirmed(): panel.SetResult(xCtrl.GetValue() if xCtrl.IsEnabled() else None, yCtrl.GetValue() if yCtrl.IsEnabled() else None, displayChoice.GetValue())
def Configure( self, host="localhost", rport=38475, prefix="AIMP", poll=2, events=7 * [False], ): text = self.text panel = eg.ConfigPanel() panel.GetParent().GetParent().SetIcon(self.info.icon.GetWxIcon()) prefix = self.name if not prefix else prefix hostCtrl = wx.TextCtrl(panel, -1, host) rportCtrl = eg.SpinIntCtrl(panel, -1, rport, max=65535) pollCtrl = eg.SpinIntCtrl(panel, -1, poll, min=1, max=99) eventPrefixCtrl = wx.TextCtrl(panel, -1, prefix) st1 = wx.StaticText(panel, -1, text.host) st2 = wx.StaticText(panel, -1, text.rport) st3 = wx.StaticText(panel, -1, text.polling) st4 = wx.StaticText(panel, -1, text.eventsLabel) st5 = wx.StaticText(panel, -1, text.eventPrefix) eg.EqualizeWidths((st1, st2)) eventsCtrl = wx.CheckListBox( panel, -1, choices=text.events, size=((-1, len(events) * (3 + st4.GetSize()[1]))), ) for i in range(len(events)): eventsCtrl.Check(i, events[i]) box1 = panel.BoxedGroup( text.tcpBox, (st1, hostCtrl), (st2, rportCtrl), ) box2 = wx.StaticBoxSizer( wx.StaticBox(panel, -1, text.eventGenerationBox), wx.HORIZONTAL) leftSizer = wx.FlexGridSizer(2, 2, 10, 5) leftSizer.Add(st5, 0, wx.TOP, 3) leftSizer.Add(eventPrefixCtrl) leftSizer.Add(st3, 0, wx.TOP, 3) leftSizer.Add(pollCtrl) rightSizer = wx.BoxSizer(wx.VERTICAL) rightSizer.Add(st4) rightSizer.Add(eventsCtrl, 0, wx.EXPAND) box2.Add(leftSizer, 0, wx.TOP, 4) box2.Add(rightSizer, 1, wx.EXPAND | wx.LEFT, 10) panel.sizer.AddMany([ (box1, 0, wx.EXPAND), (box2, 0, wx.EXPAND | wx.TOP, 10), ]) while panel.Affirmed(): tmpList = [] for i in range(len(events)): tmpList.append(eventsCtrl.IsChecked(i)) panel.SetResult(hostCtrl.GetValue(), rportCtrl.GetValue(), eventPrefixCtrl.GetValue(), pollCtrl.GetValue(), tmpList)
def Configure(self, code='', repeatCount=0, correctnessCount=1): text = self.text panel = eg.ConfigPanel() editCtrl = panel.TextCtrl(code, style=wx.TE_MULTILINE) font = editCtrl.GetFont() font.SetFaceName("Courier New") editCtrl.SetFont(font) editCtrl.SetMinSize((-1, 100)) repeatCtrl = eg.SpinIntCtrl(panel, -1, value=repeatCount, min=0, max=127) repeatCtrl.SetInitialSize((50, -1)) correctnessCtrl = eg.SpinIntCtrl(panel, -1, value=correctnessCount, min=1, max=127) correctnessCtrl.SetInitialSize((50, -1)) learnButton = panel.Button("Learn an IR Code...") try: result = self.plugin.client.GetDeviceInfo() except AttributeError: result = None if result is None or result[2] != 2: learnButton.Enable(False) panel.sizer.Add(panel.StaticText("Pronto Code"), 0, wx.EXPAND) panel.sizer.Add((5, 5)) panel.sizer.Add(editCtrl, 0, wx.EXPAND) panel.sizer.Add((5, 5)) panel.sizer.Add( eg.HBoxSizer(panel.StaticText("Repeat Counter:"), (5, 5), repeatCtrl, (5, 5), panel.StaticText("Learn Counter:"), (5, 5), correctnessCtrl, ((5, 5), 1, wx.EXPAND), (learnButton, 0, wx.ALIGN_RIGHT)), 0, wx.EXPAND) def LearnIR(event): code = self.plugin.client.LearnIR(correctnessCtrl.GetValue(), True) if not code is None: editCtrl.SetValue(code) learnButton.Bind(wx.EVT_BUTTON, LearnIR) while panel.Affirmed(): panel.SetResult(editCtrl.GetValue(), repeatCtrl.GetValue(), correctnessCtrl.GetValue())
def Configure(self, muteVol=0.0, delay=5.0, step=5.0): panel = eg.ConfigPanel(self) muteVolCtrl = eg.SpinNumCtrl(panel, -1, muteVol, max=100.0, fractionWidth=0) delayCtrl = eg.SpinIntCtrl(panel, -1, delay, min=1, max=50) stepCtrl = eg.SpinIntCtrl(panel, -1, step, min=1, max=10) panel.AddLabel(self.text.label_volume) panel.AddCtrl(muteVolCtrl) panel.AddLabel(self.text.label_delay) panel.AddCtrl(delayCtrl) panel.AddLabel(self.text.label_step) panel.AddCtrl(stepCtrl) while panel.Affirmed(): panel.SetResult(muteVolCtrl.GetValue(), delayCtrl.GetValue(), stepCtrl.GetValue())
def Configure(self, host="192.168.66.60", rport=23, timeout=2, maxDb=12): text = self.text panel = eg.ConfigPanel() panel.GetParent().GetParent().SetIcon(self.info.icon.GetWxIcon()) hostCtrl = wx.TextCtrl(panel, -1, host) rportCtrl = eg.SpinIntCtrl(panel, -1, rport, max=65535) timeoutCtrl = eg.SpinIntCtrl(panel, -1, timeout, min=1, max=10) maxDbCtrl = eg.SpinIntCtrl(panel, -1, maxDb, min=-80, max=12) panel.AddLine("Marantz Receiver IP Address:", hostCtrl) panel.AddLine("Marantz Receiver TCP Port: ", rportCtrl) panel.AddLine("Send Timeout (s): ", timeoutCtrl) panel.AddLine("Max Allowed Volume (dB): ", maxDbCtrl) while panel.Affirmed(): panel.SetResult(hostCtrl.GetValue(), rportCtrl.GetValue(), timeoutCtrl.GetValue(), maxDbCtrl.GetValue())
def Configure(self, targetVol=50.0, delay=5.0, step=5.0): panel = eg.ConfigPanel(self) volumeCtrl = eg.SpinNumCtrl(panel, -1, targetVol, max=100.0, fractionWidth=0) delayCtrl = eg.SpinIntCtrl(panel, -1, delay, min=1, max=50) stepCtrl = eg.SpinIntCtrl(panel, -1, step, min=1, max=10) panel.AddLabel("Volume to set when applying *mute*") panel.AddCtrl(volumeCtrl) panel.AddLabel("delay per step (milliseconds) for mute/unmute") panel.AddCtrl(delayCtrl) panel.AddLabel("step size for mute/unmute") panel.AddCtrl(stepCtrl) while panel.Affirmed(): panel.SetResult(volumeCtrl.GetValue(), delayCtrl.GetValue(), stepCtrl.GetValue())
def Configure(self, muteVol=0.0, delay=5.0, step=5.0): panel = eg.ConfigPanel(self) muteVolCtrl = eg.SpinNumCtrl(panel, -1, muteVol, max=100.0, fractionWidth=0) delayCtrl = eg.SpinIntCtrl(panel, -1, delay, min=1, max=50) stepCtrl = eg.SpinIntCtrl(panel, -1, step, min=1, max=10) panel.AddLabel("Volume Level to set for mute (default 0):") panel.AddCtrl(muteVolCtrl) panel.AddLabel("delay per step (milliseconds) on Mute/Unmute") panel.AddCtrl(delayCtrl) panel.AddLabel("step size on mute/unmute") panel.AddCtrl(stepCtrl) while panel.Affirmed(): panel.SetResult(muteVolCtrl.GetValue(), delayCtrl.GetValue(), stepCtrl.GetValue())
def Configure(self, targetVol=50.0, delay=5.0, step=5.0): panel = eg.ConfigPanel(self) volumeCtrl = eg.SpinNumCtrl(panel, -1, targetVol, max=100.0, fractionWidth=0) delayCtrl = eg.SpinIntCtrl(panel, -1, delay, min=1, max=50) stepCtrl = eg.SpinIntCtrl(panel, -1, step, min=1, max=10) panel.AddLabel("Volume Level:") panel.AddCtrl(volumeCtrl) panel.AddLabel("delay per step (milliseconds)") panel.AddCtrl(delayCtrl) panel.AddLabel("step (adjust vol by this much on each loop)") panel.AddCtrl(stepCtrl) while panel.Affirmed(): panel.SetResult(volumeCtrl.GetValue(), delayCtrl.GetValue(), stepCtrl.GetValue())
def add_cec_item(self, com_port, adapter_name, hdmi_port, use_avr, poll_interval, _ # scan_type ): self.lock.acquire() self.Freeze() index = self.InsertStringItem(self.GetItemCount(), adapter_name) self.SetStringItem(index, 1, com_port) self.SetStringItem(index, 2, '') self.SetStringItem(index, 3, '') self.SetStringItem(index, 4, '') com_item = self.GetItem(index, 0) name_item = self.GetItem(index, 1) hdmi_item = self.GetItem(index, 2) avr_item = self.GetItem(index, 3) poll_item = self.GetItem(index, 4) hdmi_port_ctrl = eg.SpinIntCtrl(self, -1, hdmi_port, min=1, max=99) hdmi_item.SetWindow(hdmi_port_ctrl) avr_ctrl = wx.CheckBox(self, -1, '') avr_ctrl.SetValue(use_avr) avr_item.SetWindow(avr_ctrl) poll_ctrl = eg.SpinNumCtrl(self, -1, poll_interval, min=0.1, max=5.0, increment=0.1) poll_item.SetWindow(poll_ctrl) # if scan_type is None: # com_item.SetBackgroundColour((255, 255, 75)) # name_item.SetBackgroundColour((255, 255, 75)) # hdmi_port_ctrl.SetBackgroundColour((255, 255, 75)) # hdmi_item.SetBackgroundColour((255, 255, 75)) # avr_item.SetBackgroundColour((255, 255, 75)) # # elif scan_type is False: # com_item.SetBackgroundColour((255, 0, 0)) # name_item.SetBackgroundColour((255, 0, 0)) # hdmi_item.SetBackgroundColour((255, 0, 0)) # avr_item.SetBackgroundColour((255, 0, 0)) self.SetItem(com_item) self.SetItem(name_item) self.SetItem(hdmi_item) self.SetItem(avr_item) self.SetItem(poll_item) self.Thaw() self.Update() self.lock.release()
def Configure(self, irData="", repeatCount=1, frequency=-1): def MakeHexString(data): return " ".join([("%0.2X" % ord(c)) for c in data]) def MakeStringFromHex(data): result = "" for hexdigit in data.split(" "): if len(hexdigit) == 2: result += chr(int(hexdigit, 16)) return result panel = eg.ConfigPanel(self) style = wx.TE_MULTILINE|wx.TE_BESTWRAP codeBox = wx.TextCtrl( panel, -1, MakeHexString(irData), size=(300, 150), style=style ) panel.sizer.Add(codeBox, 1, wx.EXPAND) panel.sizer.Add((5, 5)) lowerSizer = wx.BoxSizer(wx.HORIZONTAL) staticText = wx.StaticText(panel, -1, "Repeat count:") lowerSizer.Add(staticText, 0, wx.ALIGN_CENTER_VERTICAL) repeatBox = eg.SpinIntCtrl(panel, min=1, value=repeatCount) lowerSizer.Add(repeatBox) lowerSizer.Add((5, 5), 1, wx.EXPAND) def OnCapture(dummyEvent): dlg = IRLearnDialog(panel, self.plugin.dll) dlg.ShowModal() if dlg.result is not None: codeBox.SetValue(MakeHexString(dlg.result)) dlg.Destroy() captureButton = wx.Button(panel, -1, "Learn IR Code") lowerSizer.Add(captureButton, 0, wx.ALIGN_RIGHT) captureButton.Bind(wx.EVT_BUTTON, OnCapture) panel.sizer.Add(lowerSizer, 0, wx.EXPAND) while panel.Affirmed(): panel.SetResult( MakeStringFromHex(codeBox.GetValue()), repeatBox.GetValue(), -1, )
def Configure(self, code="", waitUntilFinished=True): panel = eg.ConfigPanel() repeatCount = 1 carrier = 0 if carrier < 0: carrier = 0 elif carrier > 3: carrier = 3 if repeatCount < 1: repeatCount = 1 elif repeatCount > 31: repeatCount = 31 sizer = wx.FlexGridSizer(4, 2, 5, 5) sizer.AddGrowableCol(1) sizer.Add(panel.StaticText("Code 1:"), 0, wx.ALIGN_CENTER_VERTICAL) code1Ctrl = panel.TextCtrl( code, size=(325, -1), validator=HexValidator(allowRaw=True), ) sizer.Add(code1Ctrl) sizer.Add(panel.StaticText("Repeat:"), 0, wx.ALIGN_CENTER_VERTICAL) repeatCtrl = eg.SpinIntCtrl(panel, -1, repeatCount, 1, 31) repeatCtrl.SetInitialSize((50, -1)) sizer.Add(repeatCtrl, 0) sizer.Add(panel.StaticText("Carrier:"), 0, wx.ALIGN_CENTER_VERTICAL) choices = ('35.7 kHz', '37.0 kHz', '38.4 kHz', '40.0 kHz') carrierCtrl = wx.Choice(panel, -1, choices=choices) carrierCtrl.SetSelection(3 - carrier) sizer.Add(carrierCtrl, 0) panel.sizer.Add(sizer, 0, wx.EXPAND) panel.sizer.Add((5, 5)) waitUntilFinishedCtrl = panel.CheckBox( waitUntilFinished, "Pause till transmission is finished") panel.sizer.Add(waitUntilFinishedCtrl) while panel.Affirmed(): code = code1Ctrl.GetValue() if len(code) == 0: panel.SetResult("", waitUntilFinishedCtrl.GetValue()) continue repeatCount = repeatCtrl.GetValue() carrier = 3 - carrierCtrl.GetSelection() panel.SetResult(code, waitUntilFinishedCtrl.GetValue())
def Configure(self, treatAxisAsButton = True, includedGamepadPortId = False, releaseEvents = False, pollRate = 30, newPadsRate = 4): panel = eg.ConfigPanel(self, resizable=True) optionsSizer = wx.GridBagSizer(0, 5) treatAxisAsButtonCheckBox = wx.CheckBox(panel, -1, 'Should we treat the analog inputs as normal buttons?') treatAxisAsButtonCheckBox.SetValue(treatAxisAsButton) optionsSizer.Add(treatAxisAsButtonCheckBox, (0, 0)) includedGamepadPortIdCheckBox = wx.CheckBox(panel, -1, 'Should we add the controllers ID to the event names?') includedGamepadPortIdCheckBox.SetValue(includedGamepadPortId) optionsSizer.Add(includedGamepadPortIdCheckBox, (2, 0)) releaseEventsCheckBox = wx.CheckBox(panel, -1, 'Trigger events when a button was released?') releaseEventsCheckBox.SetValue(releaseEvents) optionsSizer.Add(releaseEventsCheckBox, (4, 0)) pollRateLabel = wx.StaticText(panel, -1, 'Poll rate (how often we check the controllers for new buttons per second)') optionsSizer.Add(pollRateLabel, (6, 0)) pollRateSpin = eg.SpinIntCtrl(panel, -1, pollRate, 10, 120) optionsSizer.Add(pollRateSpin, (7, 0)) newPadsRateLabel = wx.StaticText(panel, -1, 'How often we check if a new controller has been attached (in seconds)') optionsSizer.Add(newPadsRateLabel, (9, 0)) newPadsRateSpin = eg.SpinIntCtrl(panel, -1, newPadsRate, 1, 30) optionsSizer.Add(newPadsRateSpin, (10, 0)) panel.sizer.Add(optionsSizer, 0, wx.TOP, 10) while panel.Affirmed(): panel.SetResult( treatAxisAsButtonCheckBox.GetValue(), includedGamepadPortIdCheckBox.GetValue(), releaseEventsCheckBox.GetValue(), pollRateSpin.GetValue(), newPadsRateSpin.GetValue() )
def Configure(self, room=0, tempr=0): self.dirty = False tempr = self.ConversionTempr(tempr) text = self.plugin.text panel = eg.ConfigPanel(self) panel.isDirty = self.dirty bagSizer = wx.GridBagSizer(20, 20) staticBox = wx.StaticBox(panel, -1, text.label) staticSizer = wx.StaticBoxSizer(staticBox, wx.HORIZONTAL) staticSizer.Add(bagSizer, 0, wx.ALL, 15) panel.sizer.Add(staticSizer, 0, wx.TOP | wx.LEFT, 20) rb1 = wx.RadioButton(panel, -1, text.rooms[0], style=wx.RB_GROUP) rb2 = wx.RadioButton(panel, -1, text.rooms[1]) rb3 = wx.RadioButton(panel, -1, text.rooms[2]) rb4 = wx.RadioButton(panel, -1, text.rooms[3]) rb1.SetValue(room == 1) rb2.SetValue(room == 2) rb3.SetValue(room == 3) rb4.SetValue(room == 4) bagSizer.Add(rb1, (0, 0)) bagSizer.Add(rb2, (0, 1)) bagSizer.Add(rb3, (1, 0)) bagSizer.Add(rb4, (1, 1)) temprLabel = wx.StaticText(panel, -1, text.temprLabel) temprCtrl = eg.SpinIntCtrl(panel, -1, tempr, min=self.plugin.minMax[0], max=self.plugin.minMax[1]) temprSizer = wx.BoxSizer(wx.HORIZONTAL) temprSizer.Add(temprLabel, 0, wx.TOP, 3) temprSizer.Add(temprCtrl, 0, wx.LEFT, 5) panel.sizer.Add(temprSizer, 0, wx.TOP | wx.LEFT, 20) if self.value < 2: temprLabel.Show(False) temprCtrl.Show(False) while panel.Affirmed(): i = 1 for rb in (rb1, rb2, rb3, rb4): if rb.GetValue(): break i += 1 if self.value > 1: tempr = temprCtrl.GetValue() panel.SetResult(i, tempr)
def Configure(self, mouse_speed=0): panel = eg.ConfigPanel() speed_ctrl = eg.SpinIntCtrl(panel, -1, mouse_speed, min=0, max=500) speed_lbl = panel.StaticText('Mouse speed:') speed_sizer = wx.BoxSizer(wx.HORIZONTAL) speed_sizer.Add(speed_lbl, 0, wx.ALL | wx.EXPAND, 5) speed_sizer.Add(speed_ctrl, 0, wx.ALL | wx.EXPAND, 5) panel.sizer.Add(speed_sizer) wx.CallAfter(panel.EnableButtons, True) while panel.Affirmed(): panel.SetResult(speed_ctrl.GetValue())
def Configure(self, code='', repeatCount=0): text = self.text panel = eg.ConfigPanel() editCtrl = panel.TextCtrl(code, style=wx.TE_MULTILINE) font = editCtrl.GetFont() font.SetFaceName("Courier New") editCtrl.SetFont(font) #editCtrl.SetMinSize((-1, 100)) #Duc editCtrl.SetMinSize( (800, 200 )) #Duc: make the dialog bigger so it's easier to see long codes repeatCtrl = eg.SpinIntCtrl(panel, -1, value=repeatCount, min=0, max=127) repeatCtrl.SetInitialSize((50, -1)) learnButton = panel.Button("Learn an IR Code...") result = self.plugin.client.GetDeviceInfo() if result is None or result[2] != 2: learnButton.Enable(False) panel.sizer.Add(panel.StaticText("Pronto Code"), 0, wx.EXPAND) panel.sizer.Add((5, 5)) panel.sizer.Add(editCtrl, 0, wx.EXPAND) panel.sizer.Add((5, 5)) panel.sizer.Add( eg.HBoxSizer(panel.StaticText("Repeat Counter:"), (5, 5), repeatCtrl, ((5, 5), 1, wx.EXPAND), (learnButton, 0, wx.ALIGN_RIGHT)), 0, wx.EXPAND) def LearnIR(event): code = self.plugin.client.LearnIR() #editCtrl.SetValue(code) #Duc setCodeToEditCtrl(editCtrl, code) #Duc learnButton.Bind(wx.EVT_BUTTON, LearnIR) while panel.Affirmed(): panel.SetResult(editCtrl.GetValue(), repeatCtrl.GetValue())
def Configure(self, item=0): panel = eg.ConfigPanel(self) mainSizer = wx.BoxSizer(wx.HORIZONTAL) labelTop = wx.StaticText(panel, -1, self.text.topLabel) labelTop.Enable(False) labelFront = wx.StaticText(panel, -1, self.text.frontLabel) itemCtrl = eg.SpinIntCtrl( panel, -1, min=0, max=99, ) itemCtrl.SetValue(item) labelEnd = wx.StaticText(panel, -1, self.text.endLabel) mainSizer.Add(labelFront, 0, wx.TOP, 4) mainSizer.Add(itemCtrl, 0, wx.LEFT, 5) mainSizer.Add(labelEnd, 0, wx.LEFT | wx.TOP, 4) panel.sizer.Add(labelTop) panel.sizer.Add(mainSizer, 0, wx.TOP, 15) while panel.Affirmed(): panel.SetResult(itemCtrl.GetValue(), )
def Configure( self, program="", winName=None, winClass=None, childName=None, childClass=None, matchNum=1, includeInvisible=False, timeout=0, stop=STOP_IF_NOT_FOUND ): panel = eg.ConfigPanel(resizable=True) text = self.text searchOnlyFrontmost = False if stop is None: program = "" matchNum = 1 includeInvisible = False timeout = 0 stop = 0 searchOnlyFrontmost = True self.dialog = panel.dialog self.lastHwnd = None self.lastPid = None self.hideOnDrag = True # the "only search for the frontmost" checkbox cbOnlyFrontmost = wx.CheckBox(panel, -1, text.onlyFrontmost) def OnSearchOnlyFrontmostCheckbox(event): flag = not cbOnlyFrontmost.IsChecked() cbIncludeInvisible.Enable(flag) if not flag: stopMacroCtrl_1.SetValue(False) stopMacroCtrl_2.SetValue(False) stopMacroCtrl_1.Enable(flag) stopMacroCtrl_2.Enable(flag) waitCtrl.Enable(flag) for checkBox, textCtrl in self.options[:-1]: checkBox.Enable(flag) textCtrl.Enable(flag and checkBox.GetValue()) self.options[-1][0].Enable(flag) self.options[-1][1].Enable(flag) event.Skip() cbOnlyFrontmost.Bind(wx.EVT_CHECKBOX, OnSearchOnlyFrontmostCheckbox) # the IncludeInvisible checkbox cbIncludeInvisible = wx.CheckBox(panel, -1, text.invisible_box) def OnIncludeInvisibleCheckbox(event): hwnd = self.lastHwnd self.tree.includeInvisible = cbIncludeInvisible.IsChecked() self.tree.Refresh() self.tree.SelectHwnd(hwnd) event.Skip() cbIncludeInvisible.Bind(wx.EVT_CHECKBOX, OnIncludeInvisibleCheckbox) # the stop-macro choice id_1 = wx.NewId() stopMacroCtrl_1 = wx.CheckBox(panel, id_1, text.stopMacro[0]) id_2 = wx.NewId() stopMacroCtrl_2 = wx.CheckBox(panel, id_2, text.stopMacro[1]) if stop == STOP_IF_NOT_FOUND: stopMacroCtrl_1.SetValue(True) stopMacroCtrl_2.Enable(False) elif stop == STOP_IF_FOUND: stopMacroCtrl_2.SetValue(True) stopMacroCtrl_1.Enable(False) def OnStopMacroCtrl(event): # if cbOnlyFrontmost.IsChecked(): id = event.GetId() flag = event.IsChecked() if id == id_1: stopMacroCtrl_2.Enable(not flag) if flag: stopMacroCtrl_2.SetValue(False) else: stopMacroCtrl_1.Enable(not flag) if flag: stopMacroCtrl_1.SetValue(False) event.Skip() stopMacroCtrl_1.Bind(wx.EVT_CHECKBOX, OnStopMacroCtrl) stopMacroCtrl_2.Bind(wx.EVT_CHECKBOX, OnStopMacroCtrl) finderTool = eg.WindowDragFinder( panel, self.OnFinderToolLeftClick, self.OnFinderTool ) self.finderTool = finderTool # the HideOnDrag checkbox cbHideOnDrag = wx.CheckBox(panel, -1, text.hide_box) cbHideOnDrag.SetValue(Config.hideOnDrag) def OnHideOnDragCheckbox(dummyEvent): Config.hideOnDrag = cbHideOnDrag.IsChecked() cbHideOnDrag.Bind(wx.EVT_CHECKBOX, OnHideOnDragCheckbox) # the tree to display processes and windows self.tree = eg.WindowTree(panel, includeInvisible=includeInvisible) cbIncludeInvisible.SetValue(includeInvisible) # the refresh button refreshButton = wx.Button(panel, -1, text.refresh_btn) def OnButton(dummyEvent): hwnd = self.lastHwnd self.tree.Refresh() self.tree.SelectHwnd(hwnd) refreshButton.Bind(wx.EVT_BUTTON, OnButton) # construction of the layout with sizers dragSizer = wx.StaticBoxSizer( wx.StaticBox(panel, -1, "Drag Finder"), wx.VERTICAL ) dragSizer.Add(finderTool, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.BOTTOM, 4) dragSizer.Add(cbHideOnDrag) leftTopSizer = wx.BoxSizer(wx.VERTICAL) leftTopSizer.Add(cbOnlyFrontmost, 0, wx.BOTTOM, 5) leftTopSizer.Add(cbIncludeInvisible, 0, wx.BOTTOM, 5) leftTopSizer.Add(stopMacroCtrl_1, 0, wx.BOTTOM, 5) leftTopSizer.Add(stopMacroCtrl_2, 0, wx.BOTTOM, 5) topSizer = wx.BoxSizer(wx.HORIZONTAL) topSizer.Add(leftTopSizer, 1, wx.EXPAND) topSizer.Add(dragSizer) sizer1 = wx.GridBagSizer(vgap=4, hgap=4) sizer1.SetEmptyCellSize((0, 0)) sizer1.Add(self.tree, (0, 0), (1, 5), wx.EXPAND) sizer1.Add(refreshButton, (1, 4), (2, 1), wx.ALIGN_TOP | wx.ALIGN_RIGHT) self.options = options = [] def Wrapper(textCtrl, checkBox): def OnCheckBox(event): textCtrl.Enable(checkBox.GetValue()) event.Skip() return OnCheckBox def MakeLine(line, checkBoxText, value): checkBox = wx.CheckBox(panel, -1, checkBoxText) sizer1.Add(checkBox, (line, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) textCtrl = wx.TextCtrl(panel, -1, size=(20, -1)) if value is not None: checkBox.SetValue(True) textCtrl.SetValue(value) else: textCtrl.Enable(False) sizer1.Add(textCtrl, (line, 1), (1, 3), wx.EXPAND) checkBox.Bind(wx.EVT_CHECKBOX, Wrapper(textCtrl, checkBox)) options.append((checkBox, textCtrl)) line += 1 MakeLine(1, text.options[0], program) MakeLine(2, text.options[1], winName) MakeLine(3, text.options[2], winClass) MakeLine(4, text.options[3], childName) MakeLine(5, text.options[4], childClass) line = 6 numMatchCB = wx.CheckBox(panel, -1, text.matchNum1) numMatchCB.SetValue(bool(matchNum)) sizer1.Add(numMatchCB, (line, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL) numMatchCtrl = eg.SpinIntCtrl(panel, -1, matchNum or 1, 1) sizer1.Add(numMatchCtrl, (line, 1), (1, 1), wx.EXPAND) sizer1.Add( wx.StaticText(panel, -1, text.matchNum2), (line, 2), (1, 3), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT ) numMatchCB.Bind(wx.EVT_CHECKBOX, Wrapper(numMatchCtrl, numMatchCB)) options.append((numMatchCB, numMatchCtrl)) line += 1 # the wait parameter waitCtrl = eg.SpinNumCtrl(panel) waitCtrl.SetValue(timeout) sizer1.Add( panel.StaticText(text.wait1), (line, 0), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT ) sizer1.Add( waitCtrl, (line, 1), (1, 1), wx.ALIGN_CENTER_VERTICAL | wx.EXPAND ) sizer1.Add( panel.StaticText(text.wait2), (line, 2), (1, 3), wx.ALIGN_CENTER_VERTICAL ) line += 1 sizer1.Add((1, 1), (line, 0)) sizer1.AddGrowableCol(2, 100) sizer1.AddGrowableRow(0, 100) #sizer1.SetItemMinSize(options[0][1], 300, -1) # group the main lines together panel.sizer.AddMany([ (topSizer, 0, wx.EXPAND), ((5, 5), ), (sizer1, 1, wx.EXPAND), ]) # re-assign the test button def OnTestButton(dummyEvent): args = GetResult()[:-2] # we don't need timeout and stopMacro hwnds = eg.WindowMatcher(*args)() dialog = TestDialog(panel.dialog, hwnds) dialog.ShowModal() dialog.Destroy() panel.dialog.buttonRow.testButton.Bind(wx.EVT_BUTTON, OnTestButton) @eg.LogIt def GetResult(): resultList = [] for checkBox, textCtrl in options: if not checkBox.IsChecked(): resultList.append(None) else: resultList.append(textCtrl.GetValue()) resultList.append(self.tree.includeInvisible) resultList.append(waitCtrl.GetValue()) if stopMacroCtrl_1.IsChecked(): resultList.append(STOP_IF_NOT_FOUND) elif stopMacroCtrl_2.IsChecked(): resultList.append(STOP_IF_FOUND) else: resultList.append(STOP_NEVER) return resultList hwnds = eg.WindowMatcher( program, winName, winClass, childName, childClass, matchNum, includeInvisible, )() if matchNum is not None and len(hwnds): self.lastHwnd = hwnds[0] self.tree.SelectHwnd(self.lastHwnd) if searchOnlyFrontmost: cbOnlyFrontmost.SetValue(True) OnSearchOnlyFrontmostCheckbox(wx.CommandEvent()) while True: self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelectionChanged) affirmed = panel.Affirmed() self.tree.Unbind(wx.EVT_TREE_SEL_CHANGED) if not affirmed: break if cbOnlyFrontmost.IsChecked(): panel.SetResult( None, None, None, None, None, None, None, None, None ) else: panel.SetResult(*GetResult())
def SpinIntCtrl(self, value=0, *args, **kwargs): return eg.SpinIntCtrl(self, -1, value, *args, **kwargs)
def Configure(self, servers = SERVERS, rate = 60, auto = True): def boxEnable(enable): self.serverCtrl.Enable(enable) btnTest.Enable(enable) text = self.text panel = eg.ConfigPanel(self) self.servers = servers leftSizer = wx.FlexGridSizer(4, 2, 2, 8) topMiddleSizer=wx.BoxSizer(wx.VERTICAL) listLabel=wx.StaticText(panel, -1, text.listLabel) listBoxCtrl=wx.ListBox( panel,-1, size=wx.Size(200, 110), style=wx.LB_SINGLE|wx.LB_NEEDED_SB ) self.statusLbl=wx.StaticText(panel, -1, "") self.statusLbl.SetForegroundColour(wx.RED) self.serverCtrl=wx.TextCtrl(panel,-1,'') rateLbl=wx.StaticText(panel, -1, text.rateLbl) rateCtrl = eg.SpinIntCtrl(panel, -1, rate, min=1, max=1440) autoCtrl = wx.CheckBox(panel, -1, text.autoLbl) autoCtrl.SetValue(auto) sz = panel.dialog.GetClientSize() console = LogCtrl(panel, -1, "", wx.DefaultPosition, wx.Size(sz[0], 60)) console.SetMinSize(wx.Size(sz[0], 60)) self.log = console #Button UP bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_UP, wx.ART_OTHER, (16, 16)) btnUP = wx.BitmapButton(panel, -1, bmp) btnUP.Enable(False) topMiddleSizer.Add(btnUP) #Button DOWN bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_DOWN, wx.ART_OTHER, (16, 16)) btnDOWN = wx.BitmapButton(panel, -1, bmp) btnDOWN.Enable(False) topMiddleSizer.Add(btnDOWN,0,wx.TOP,3) #Buttons 'Delete' and 'Insert new' btnApp=wx.Button(panel,-1,text.insert) btnDEL=wx.Button(panel,-1,text.delete) #Buttons 'Test' btnTest=wx.Button(panel,-1,text.testLbl) eg.EqualizeWidths((btnDEL, btnApp, btnTest)) #Buttons 'Sync' btnSync=wx.Button(panel,-1,text.syncLbl) btnDEL.Enable(False) leftSizer.Add(listLabel,0,wx.TOP,5) leftSizer.Add((1,1)) leftSizer.Add(listBoxCtrl,0,wx.TOP,2) leftSizer.Add(topMiddleSizer,0,wx.TOP,5) leftSizer.Add(self.serverCtrl,0,wx.EXPAND|wx.TOP,4) leftSizer.Add(btnTest,0,wx.TOP,3) rightStatBox = wx.StaticBoxSizer( wx.StaticBox(panel, -1, text.periodic), wx.VERTICAL ) rightStatBox.Add(rateLbl,0,wx.TOP,5) rightStatBox.Add(rateCtrl,0,wx.EXPAND|wx.TOP,2) rightStatBox.Add(autoCtrl,0,wx.TOP,14) rightStatBox.Add(self.statusLbl,0,wx.TOP,14) rightSizer = wx.BoxSizer(wx.VERTICAL) rightSizer.Add(rightStatBox,1,wx.EXPAND) rightSizer.Add(btnSync,0,wx.TOP,12) topMiddleSizer.Add(btnDEL,0,wx.TOP,5) topMiddleSizer.Add(btnApp,0,wx.TOP,5) mainSizer = wx.BoxSizer(wx.HORIZONTAL) mainSizer.Add(leftSizer,0,wx.RIGHT,15) mainSizer.Add(rightSizer, 1, wx.EXPAND|wx.TOP,7) panel.sizer.Add(mainSizer,0,wx.EXPAND) panel.sizer.Add(console,1,wx.EXPAND|wx.TOP,5) if len(self.servers) > 0: listBoxCtrl.Set(self.servers) listBoxCtrl.SetSelection(0) self.serverCtrl.SetValue(self.servers[0]) self.oldSel=0 btnUP.Enable(True) btnDOWN.Enable(True) btnDEL.Enable(True) else: boxEnable(False) panel.dialog.buttonRow.applyButton.Enable(False) panel.dialog.buttonRow.okButton.Enable(False) panel.sizer.Layout() def onClick(evt): self.flag = False sel = listBoxCtrl.GetSelection() label = self.serverCtrl.GetValue() if label.strip() != "": if self.servers.count(label) == 1: self.oldSel=sel self.serverCtrl.SetValue(self.servers[sel]) listBoxCtrl.SetSelection(self.oldSel) listBoxCtrl.SetFocus() evt.Skip() self.flag = True listBoxCtrl.Bind(wx.EVT_LISTBOX, onClick) def onButtonSync(evt): self.InstantSynchro() #server = self.serverCtrl.GetValue() #self.Log(self.text.syncStart % server) #self.Synchro((server,)) btnSync.Bind(wx.EVT_BUTTON, onButtonSync) def onButtonTest(evt): server = self.serverCtrl.GetValue() self.Log(self.text.testStart % server) resp = self.NtpRequest(server) if isinstance(resp, list): self.Log(self.text.testPassed % ( str(dt.fromtimestamp(resp[0]))[:19], str(resp[1])) ) else: self.Log(self.text.testFailed % resp) btnTest.Bind(wx.EVT_BUTTON, onButtonTest) def onButtonUp(evt): newSel,self.servers=Move(self.servers,listBoxCtrl.GetSelection(),-1) listBoxCtrl.Set(self.servers) listBoxCtrl.SetSelection(newSel) self.oldSel = newSel #evt.Skip() btnUP.Bind(wx.EVT_BUTTON, onButtonUp) def onButtonDown(evt): newSel,self.servers=Move(self.servers,listBoxCtrl.GetSelection(),1) listBoxCtrl.Set(self.servers) listBoxCtrl.SetSelection(newSel) self.oldSel = newSel #evt.Skip() btnDOWN.Bind(wx.EVT_BUTTON, onButtonDown) def onButtonDelete(evt): self.flag = False lngth=len(self.servers) if lngth==2: btnUP.Enable(False) btnDOWN.Enable(False) sel = listBoxCtrl.GetSelection() if lngth == 1: self.servers=[] listBoxCtrl.Set([]) self.serverCtrl.SetValue("") boxEnable(False) panel.dialog.buttonRow.applyButton.Enable(False) panel.dialog.buttonRow.okButton.Enable(False) btnDEL.Enable(False) btnApp.Enable(True) evt.Skip() return elif sel == lngth - 1: sel = 0 self.oldSel = sel self.servers.pop(listBoxCtrl.GetSelection()) listBoxCtrl.Set(self.servers) listBoxCtrl.SetSelection(sel) self.serverCtrl.SetValue(self.servers[sel]) evt.Skip() self.flag = True btnDEL.Bind(wx.EVT_BUTTON, onButtonDelete) def OnTxtChange(evt): if self.servers != [] and self.flag: flag = False sel = self.oldSel label = self.serverCtrl.GetValue() self.servers[sel]=label listBoxCtrl.Set(self.servers) listBoxCtrl.SetSelection(sel) if label != "": flag = self.servers.count(label) == 1 panel.dialog.buttonRow.applyButton.Enable(flag) panel.dialog.buttonRow.okButton.Enable(flag) btnApp.Enable(flag) evt.Skip() self.serverCtrl.Bind(wx.EVT_TEXT, OnTxtChange) def OnButtonAppend(evt): self.flag = False if len(self.servers)==1: btnUP.Enable(True) btnDOWN.Enable(True) boxEnable(True) sel = listBoxCtrl.GetSelection() + 1 self.oldSel=sel self.servers.insert(sel,"") listBoxCtrl.Set(self.servers) listBoxCtrl.SetSelection(sel) self.serverCtrl.SetValue("") self.serverCtrl.SetFocus() btnApp.Enable(False) btnDEL.Enable(True) evt.Skip() self.flag = True btnApp.Bind(wx.EVT_BUTTON, OnButtonAppend) # the apply button wrapper onApply = panel.dialog.OnApply def OnButton(event): console = self.log onApply(event) wx.CallAfter(self.SetStatusLabel) self.log = console panel.dialog.buttonRow.applyButton.Bind(wx.EVT_BUTTON, OnButton) # the cancel button wrapper onCancel = panel.dialog.OnCancel def OnCancel(event): onCancel(event) self.log = None panel.dialog.buttonRow.cancelButton.Bind(wx.EVT_BUTTON, OnCancel) onClose = panel.dialog.OnClose def OnClose(event): onClose(event) self.log = None panel.dialog.Bind(wx.EVT_CLOSE, OnClose) self.SetStatusLabel() while panel.Affirmed(): self.log = None panel.SetResult( listBoxCtrl.GetStrings(), rateCtrl.GetValue(), autoCtrl.GetValue(), )
def Configure(self, remoteName=None, keyName=None, numRepeats=None): panel = eg.ConfigPanel() remoteName = remoteName or self.remoteName or "" keyName = keyName or self.keyName or "" numRepeats = numRepeats or self.numRepeats or 1 mySizer = wx.FlexGridSizer(3, 2, 5, 5) st1 = wx.StaticText(panel, -1, "Fernbedienung") mySizer.Add(st1, 0, wx.ALIGN_CENTER_VERTICAL) rchoices = [] kchoices = [] foundRemoteIndex = 0 comObj = None try: comObj = Dispatch(YARD_CLSID) except: pass else: remotes = comObj.GetRemotes() for i in xrange(len(remotes)): rName = remotes.Item(i).Name rchoices.append(rName) if rName == remoteName: foundRemoteIndex = i remoteCtrl = wx.Choice(panel, -1, choices=rchoices)#, size=(150,-1)) mySizer.Add(remoteCtrl, 1, wx.EXPAND) st2 = wx.StaticText(panel, -1, "Name der Taste") mySizer.Add(st2, 0, wx.ALIGN_CENTER_VERTICAL) keyCtrl = wx.Choice(panel, -1, choices=kchoices)#, size=(150,-1)) mySizer.Add(keyCtrl, 1, wx.EXPAND) def UpdateKeys(event=None): foundKeyIndex = 0 remoteIndex = remoteCtrl.GetSelection() remote = remotes.Item(remoteIndex) keyCtrl.Clear() for i in xrange(remote.count): key = remote.Keys(i).Name keyCtrl.Append(key) if key == keyName: foundKeyIndex = i keyCtrl.Select(foundKeyIndex) remoteCtrl.Bind(wx.EVT_CHOICE, UpdateKeys) remoteCtrl.Select(foundRemoteIndex) if comObj: UpdateKeys() st3 = wx.StaticText(panel, -1, "Anzahl der Wiederholungen") mySizer.Add(st3, 0, wx.ALIGN_CENTER_VERTICAL) numRepeatsCtrl = eg.SpinIntCtrl(panel, value=numRepeats, min=1) mySizer.Add(numRepeatsCtrl) panel.sizer.Add(mySizer, 1, wx.EXPAND) while panel.Affirmed(): self.remoteName = remoteCtrl.GetStringSelection() self.keyName = keyCtrl.GetStringSelection() self.numRepeats = numRepeatsCtrl.GetValue() panel.SetResult(self.remoteName, self.keyName, self.numRepeats)
def Configure(self, code="", waitUntilFinished=True): panel = eg.ConfigPanel() code1 = "" code2 = "" repeatCount = 4 carrier = 0 if code: code += (48 * "\x00") if code[0] == "\x36": length = ord(code[1]) code1 = "R" + hexlify(code[2:length]).upper() repeatCount = ord(code[length]) & 0x1F carrier = ord(code[length]) >> 6 else: repeatCount = ord(code[0]) & 0x1F if repeatCount > 0: carrier = ord(code[0]) >> 6 code1 = hexlify(code[1:26]).upper() else: repeatCount = ord(code[26]) & 0x1F carrier = ord(code[0]) >> 6 code1 = hexlify(code[1:26]).upper() code2 = hexlify(code[27:48]).upper() if carrier < 0: carrier = 0 elif carrier > 3: carrier = 3 if repeatCount < 1: repeatCount = 1 elif repeatCount > 31: repeatCount = 31 sizer = wx.FlexGridSizer(4, 2, 5, 5) sizer.AddGrowableCol(1) sizer.Add(panel.StaticText("Code 1:"), 0, wx.ALIGN_CENTER_VERTICAL) code1Ctrl = panel.TextCtrl( code1, size=(325, -1), validator=HexValidator(allowRaw=True), ) sizer.Add(code1Ctrl) sizer.Add(panel.StaticText("Code 2:"), 0, wx.ALIGN_CENTER_VERTICAL) code2Ctrl = panel.TextCtrl(code2, size=(275, -1), validator=HexValidator()) sizer.Add(code2Ctrl) sizer.Add(panel.StaticText("Repeat:"), 0, wx.ALIGN_CENTER_VERTICAL) repeatCtrl = eg.SpinIntCtrl(panel, -1, repeatCount, 1, 31) repeatCtrl.SetInitialSize((50, -1)) sizer.Add(repeatCtrl, 0) sizer.Add(panel.StaticText("Carrier:"), 0, wx.ALIGN_CENTER_VERTICAL) choices = ('35.7 kHz', '37.0 kHz', '38.4 kHz', '40.0 kHz') carrierCtrl = wx.Choice(panel, -1, choices=choices) carrierCtrl.SetSelection(3 - carrier) sizer.Add(carrierCtrl, 0) panel.sizer.Add(sizer, 0, wx.EXPAND) panel.sizer.Add((5, 5)) waitUntilFinishedCtrl = panel.CheckBox( waitUntilFinished, "Pause till transmission is finished") panel.sizer.Add(waitUntilFinishedCtrl) while panel.Affirmed(): code1 = code1Ctrl.GetValue() if len(code1) == 0: panel.SetResult("", waitUntilFinishedCtrl.GetValue()) continue code2 = code2Ctrl.GetValue() repeatCount = repeatCtrl.GetValue() carrier = 3 - carrierCtrl.GetSelection() if code1[0] == "R": data = unhexlify(code1[1:]) bCmd = repeatCount | (carrier << 6) code = "\x36" + chr(len(data) + 2) + data + chr(bCmd) elif len(code2) == 0: data = unhexlify(code1) bCmd = repeatCount | (carrier << 6) code = chr(bCmd) + data else: bCmd = 0 | (carrier << 6) bCmd2 = repeatCount | (carrier << 6) code = chr(bCmd) + unhexlify(code1) \ + chr(bCmd2) + unhexlify(code2) panel.SetResult(code + CalcChecksum(code), waitUntilFinishedCtrl.GetValue())