Example #1
0
    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())
Example #3
0
 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)
Example #4
0
    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())
Example #10
0
    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()
Example #11
0
    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,
            )
Example #12
0
    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()
			)
Example #14
0
    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)
Example #15
0
    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())
Example #17
0
    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(), )
Example #18
0
    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)
Example #20
0
    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(),
            )
Example #21
0
    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)
Example #22
0
    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())