Package: enigma2-plugin-extensions-audiosync
-Version: 1.0b1-20091118-r0
+Version: 1.0b2-20091118-r0
Description: Set Audio delay
Architecture: mipsel
Section: extra
+++ /dev/null
-from AC3utils import AC3, PCM, AC3GLOB, PCMGLOB, AC3PCM, SKIN, MOVEPOSITIONSTEP
-from HelpableNumberActionMap import HelpableNumberActionMap
-from Components.Label import Label,MultiColorLabel
-from Components.Pixmap import MultiPixmap
-from Components.ProgressBar import ProgressBar
-from Components.config import config
-from Screens.HelpMenu import HelpableScreen
-from Screens.Screen import Screen
-from __init__ import _
-from enigma import ePoint, eTimer, getDesktop
-
-class AC3Positioner(Screen, HelpableScreen):
- def __init__(self, session, plugin_path):
- Screen.__init__(self, session)
- self.skin = SKIN
-
- self.skin_path = plugin_path
-
- self.screenSize_x = 600
- self.screenSize_y = 100
- self.minMargin = 30
-
- #Delay information
- for sAudio in AC3PCM:
- self[sAudio+"DelayInfoLabel"] = Label( _("%s:")%sAudio)
- self[sAudio+"DelayInfo"] = Label(_("%i ms")%0)
-
- #Tabbed table labels
- self["AC3TableTab"] = MultiPixmap()
- self["AC3GLOBTableTab"] = MultiPixmap()
- self["PCMTableTab"] = MultiPixmap()
- self["PCMGLOBTableTab"] = MultiPixmap()
-
- self["AC3TableTabLabel"] = MultiColorLabel( _("Passthrough"))
- self["AC3GLOBTableTabLabel"] = MultiColorLabel( _("Global Passthr."))
- self["PCMTableTabLabel"] = MultiColorLabel( _("PCM"))
- self["PCMGLOBTableTabLabel"] = MultiColorLabel( _("Global PCM"))
-
- # Slider
- self["AudioSliderBar"] = ProgressBar()
- self["AudioSlider"] = Label(_("%i ms")%0)
- self["AudioSliderLabel"] = MultiColorLabel( _("Delay:"))
-
- #Service Information
- self["ServiceInfoLabel"] = Label(_("Channel audio:"))
- self["ServiceInfo"] = Label()
-
- # Buttons
- self["key_red"] = Label(_("Cancel"))
- self["key_green"] = Label(_("OK"))
- self["key_yellow"] = Label(_("Switch audio"))
- self["key_blue"] = Label("Save to key")
-
- self["actions"] = HelpableNumberActionMap(self, "PluginAudioSyncActions",
- {
- "ok": (self.keyOk, _("Save values and close screen")),
- "cancel": (self.keyCancel, _("Discard changes and close screen")),
- "left": (self.keyLeft, _("Move screen to the left")),
- "right": (self.keyRight, _("Move screen to the right")),
- "up": (self.keyUp, _("Move screen up")),
- "down": (self.keyDown, _("Move screen down")),
- "red": (self.keyCancel, _("Discard changes and close screen")),
- "green": (self.keyOk, _("Save values and close screen")),
- "1": (self.keyNumber, _("Move screen to the upper left corner")),
- "2": (self.keyNumber, _("Center screen at the upper border")),
- "3": (self.keyNumber, _("Move screen to the upper right corner")),
- "4": (self.keyNumber, _("Move screen to the middle of the left border")),
- "5": (self.keyNumber, _("Move screen to the center of your TV")),
- "6": (self.keyNumber, _("Move screen to the middle of the right border")),
- "7": (self.keyNumber, _("Move screen to the lower left corner")),
- "8": (self.keyNumber, _("Center screen at the lower border")),
- "9": (self.keyNumber, _("Move screen to the lower right corner")),
- "0": (self.keyNumber, _("Reset saved position"))
- }, -1)
-
- HelpableScreen.__init__(self)
-
- desktop = getDesktop(0)
- self.desktopWidth = desktop.size().width()
- self.desktopHeight = desktop.size().height()
-
- self.moveTimer = eTimer()
- self.moveTimer.callback.append(self.movePosition)
- self.moveTimer.start(50, 1)
-
- def movePosition(self):
- if config.plugins.AC3LipSync.position_x.value == 0 and config.plugins.AC3LipSync.position_y.value == 0:
- config.plugins.AC3LipSync.position_x.value = (self.desktopWidth - self.screenSize_x)/2
- config.plugins.AC3LipSync.position_y.value = self.minMargin
- self.instance.move(ePoint(config.plugins.AC3LipSync.position_x.value, config.plugins.AC3LipSync.position_y.value))
-
- self.moveTimer.start(50, 1)
-
- def keyLeft(self):
- value = config.plugins.AC3LipSync.position_x.value
- value -= MOVEPOSITIONSTEP
- if value < 0:
- value = 0
- config.plugins.AC3LipSync.position_x.value = value
-
- def keyUp(self):
- value = config.plugins.AC3LipSync.position_y.value
- value -= MOVEPOSITIONSTEP
- if value < 0:
- value = 0
- config.plugins.AC3LipSync.position_y.value = value
-
- def keyRight(self):
- value = config.plugins.AC3LipSync.position_x.value
- value += MOVEPOSITIONSTEP
- if value > self.desktopWidth:
- value = self.desktopWidth
- config.plugins.AC3LipSync.position_x.value = value
-
- def keyDown(self):
- value = config.plugins.AC3LipSync.position_y.value
- value += MOVEPOSITIONSTEP
- if value > self.desktopHeight:
- value = self.desktopHeight
- config.plugins.AC3LipSync.position_y.value = value
-
- def keyNumber(self, number):
- #x- Positioning
- if number in (1,4,7):
- iPosX = self.minMargin
- elif number in (2,5,8,0):
- iPosX = (self.desktopWidth - self.screenSize_x)/2
- else:
- iPosX = self.desktopWidth - self.minMargin - self.screenSize_x
-
- config.plugins.AC3LipSync.position_x.value = iPosX
-
- #y- positioning
- if number in (0,1,2,3):
- iPosY = self.minMargin
- elif number in (4,5,6):
- iPosY = (self.desktopHeight - self.screenSize_y)/2
- elif number in (7,8,9):
- iPosY = self.desktopHeight - self.minMargin - self.screenSize_y
-
- config.plugins.AC3LipSync.position_y.value = iPosY
-
- def keyOk(self):
- config.plugins.AC3LipSync.position_x.save()
- config.plugins.AC3LipSync.position_y.save()
- self.close()
-
- def keyCancel(self):
- config.plugins.AC3LipSync.position_x.cancel()
- config.plugins.AC3LipSync.position_y.cancel()
- self.close()
from Components.Pixmap import MultiPixmap
from Components.ProgressBar import ProgressBar
from Components.config import config
+from MovableScreen import MovableScreen
from Screens.ChoiceBox import ChoiceBox
from Screens.HelpMenu import HelpableScreen
from Screens.MessageBox import MessageBox
from Screens.InfoBarGenerics import InfoBarAudioSelection
from __init__ import _
-class AC3LipSync(Screen, HelpableScreen, InfoBarAudioSelection):
+class AC3LipSync(Screen, HelpableScreen, MovableScreen, InfoBarAudioSelection):
def __init__(self, session, plugin_path):
Screen.__init__(self, session)
}, -1)
HelpableScreen.__init__(self)
+ MovableScreen.__init__(self, config.plugins.AC3LipSync, 600, 100)
def __onShow(self):
for sAudio in AC3PCM:
self.movePosition()
- def movePosition(self):
- if config.plugins.AC3LipSync.position_x.value != 0 or config.plugins.AC3LipSync.position_y.value != 0:
- self.instance.move(ePoint(config.plugins.AC3LipSync.position_x.value, config.plugins.AC3LipSync.position_y.value))
-
-
def keyUp(self):
if self.AC3delay.whichAudio == PCMGLOB:
self.AC3delay.whichAudio = PCM
def DoShowMenu(self, answer):
if answer is not None:
if answer[1] == "1":
- self.session.openWithCallback(self.positionerCallback,AC3Positioner,self.skin_path)
+ self.startMoving([self["actions"]])
else:
sResponse = _("Invalid selection")
iType = MessageBox.TYPE_ERROR
iDelay = self["AudioSliderBar"].getValue()+self.lowerBound
AC3SetCustomValue(self.session,iDelay,self.keyStep)
-
- def positionerCallback(self):
- self.movePosition()
-
+
def setSliderInfo(self, iDelay):
sAudio = self.AC3delay.whichAudio
self.currentValue[sAudio] = iDelay + self.lowerBound
AC3PCM = (AC3,PCM,AC3GLOB,PCMGLOB)
PLUGIN_BASE = "AudioSync"
-PLUGIN_VERSION = "1.0b1"
+PLUGIN_VERSION = "1.0b2"
MOVEPOSITIONSTEP = 10
SKIN = """
<screen flags="wfNoBorder" position="center,30" size="600,100" title="AC3 Lip Sync" zPosition="1" backgroundColor="#ff000000">
<ePixmap pixmap="~/img/BGTable.png" zPosition="1" position="5,20" size="590,80" alphatest="on" transparent="1" />
- <widget name="AC3TableTabLabel" zPosition="2" position="10,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" foregroundColors="#00000000,#00000000"/>
- <widget name="AC3TableTab" pixmaps="~/img/BGTableTabDark.png,~/img/BGTableTabLight.png" position="10,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
- <widget name="AC3GLOBTableTabLabel" zPosition="2" position="150,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" foregroundColors="#00000000,#00000000"/>
- <widget name="AC3GLOBTableTab" pixmaps="~/img/BGTableTabDark.png,~/img/BGTableTabLight.png" position="150,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
- <widget name="PCMTableTabLabel" zPosition="2" position="290,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" foregroundColors="#00000000,#00000000"/>
- <widget name="PCMTableTab" pixmaps="~/img/BGTableTabDark.png,~/img/BGTableTabLight.png" position="290,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
- <widget name="PCMGLOBTableTabLabel" zPosition="2" position="430,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" foregroundColors="#00000000,#00000000"/>
- <widget name="PCMGLOBTableTab" pixmaps="~/img/BGTableTabDark.png,~/img/BGTableTabLight.png" position="430,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
+ <widget name="AC3TableTabLabel" zPosition="2" position="10,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" backgroundColor="#232323" foregroundColors="#dddddd,#ffffff"/>
+ <widget name="AC3TableTab" pixmaps="~/img/BGTableTabLight.png,~/img/BGTableTabDark.png" position="10,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
+ <widget name="AC3GLOBTableTabLabel" zPosition="2" position="150,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" backgroundColor="#232323" foregroundColors="#dddddd,#ffffff"/>
+ <widget name="AC3GLOBTableTab" pixmaps="~/img/BGTableTabLight.png,~/img/BGTableTabDark.png" position="150,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
+ <widget name="PCMTableTabLabel" zPosition="2" position="290,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" backgroundColor="#232323" foregroundColors="#dddddd,#ffffff"/>
+ <widget name="PCMTableTab" pixmaps="~/img/BGTableTabLight.png,~/img/BGTableTabDark.png" position="290,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
+ <widget name="PCMGLOBTableTabLabel" zPosition="2" position="430,0" size="140,26" font="Regular;14" halign="center" valign="center" transparent="1" backgroundColor="#232323" foregroundColors="#dddddd,#ffffff"/>
+ <widget name="PCMGLOBTableTab" pixmaps="~/img/BGTableTabLight.png,~/img/BGTableTabDark.png" position="430,0" zPosition="1" size="140,26" transparent="1" alphatest="on" />
<ePixmap pixmap="~/img/AC3LipSyncBarBG.png" zPosition="2" position="180,26" size="370,21" alphatest="on" transparent="1" />
- <widget name="AudioSliderLabel" zPosition="2" position="12,26" size="150,21" font="Regular;18" foregroundColor="#00222222" transparent="1" />
- <widget name="AudioSliderBar" pixmap="~/img/AC3LipSyncBar.png" zPosition="2" position="180,26" size="370,21" transparent="1" />
- <widget name="AudioSlider" zPosition="3" position="180,26" size="370,21" font="Regular;18" halign="center" valign="center" transparent="1"/>
- <widget name="ServiceInfoLabel" zPosition="4" position="12,51" size="180,21" font="Regular;18" foregroundColor="#00222222" transparent="1" />
- <widget name="ServiceInfo" zPosition="4" position="197,51" size="180,21" font="Regular;18" foregroundColor="#00000000" transparent="1" />
- <widget name="AC3DelayInfoLabel" zPosition="4" position="387,51" size="48,21" font="Regular;18" foregroundColor="#00222222" transparent="1" />
- <widget name="AC3DelayInfo" zPosition="4" position="437,51" size="50,21" font="Regular;18" foregroundColor="#00000000" transparent="1" />
- <widget name="PCMDelayInfoLabel" zPosition="4" position="497,51" size="48,21" font="Regular;18" foregroundColor="#00222222" transparent="1" />
- <widget name="PCMDelayInfo" zPosition="4" position="547,51" size="50,21" font="Regular;18" foregroundColor="#00000000" transparent="1" />
+ <widget name="AudioSliderLabel" zPosition="2" position="12,26" size="150,21" font="Regular;18" backgroundColor="#232323" foregroundColor="#cccccc" transparent="1" />
+ <widget name="AudioSliderBar" pixmap="~/img/AC3LipSyncBar.png" zPosition="3" position="180,26" size="370,21" transparent="1" />
+ <widget name="AudioSlider" zPosition="4" position="180,26" size="370,21" font="Regular;18" halign="center" valign="center" transparent="1"/>
+ <widget name="ServiceInfoLabel" zPosition="4" position="12,51" size="180,21" font="Regular;18" backgroundColor="#232323" foregroundColor="#cccccc" transparent="1" />
+ <widget name="ServiceInfo" zPosition="4" position="197,51" size="180,21" font="Regular;18" backgroundColor="#232323" foregroundColor="#ffffff" transparent="1" />
+ <widget name="AC3DelayInfoLabel" zPosition="4" position="387,51" size="48,21" font="Regular;18" backgroundColor="#232323" foregroundColor="#cccccc" transparent="1" />
+ <widget name="AC3DelayInfo" zPosition="4" position="437,51" size="50,21" font="Regular;18" foregroundColor="#ffffff" transparent="1" />
+ <widget name="PCMDelayInfoLabel" zPosition="4" position="497,51" size="48,21" font="Regular;18" backgroundColor="#232323" foregroundColor="#cccccc" transparent="1" />
+ <widget name="PCMDelayInfo" zPosition="4" position="547,51" size="50,21" font="Regular;18" backgroundColor="#232323" foregroundColor="#ffffff" transparent="1" />
<ePixmap pixmap="~/img/key-red.png" position="25,77" zPosition="5" size="20,20" transparent="1" alphatest="on" />
<ePixmap pixmap="~/img/key-green.png" position="160,77" zPosition="5" size="20,20" transparent="1" alphatest="on" />
<ePixmap pixmap="~/img/key-yellow.png" position="295,77" zPosition="5" size="20,20" transparent="1" alphatest="on" />
<ePixmap pixmap="~/img/key-blue.png" position="430,77" zPosition="5" size="20,20" transparent="1" alphatest="on" />
<widget name="key_red" position="50,77" zPosition="4" size="110,21"
- font="Regular;16" valign="center" halign="left" foregroundColor="#00000000" transparent="1"/>
+ font="Regular;16" valign="center" halign="left" backgroundColor="#232323" foregroundColor="#ffffff" transparent="1"/>
<widget name="key_green" position="185,77" zPosition="4" size="110,21"
- font="Regular;16" valign="center" halign="left" foregroundColor="#00000000" transparent="1"/>
+ font="Regular;16" valign="center" halign="left" backgroundColor="#232323" foregroundColor="#ffffff" transparent="1"/>
<widget name="key_yellow" position="320,77" zPosition="4" size="110,21"
- font="Regular;16" valign="center" halign="left" foregroundColor="#00000000" transparent="1" />
+ font="Regular;16" valign="center" halign="left" backgroundColor="#232323" foregroundColor="#ffffff" transparent="1" />
<widget name="key_blue" position="455,77" zPosition="4" size="110,21"
- font="Regular;16" valign="center" halign="left" foregroundColor="#00000000" transparent="1" />
+ font="Regular;16" valign="center" halign="left" backgroundColor="#232323" foregroundColor="#ffffff" transparent="1" />
</screen>"""
\ No newline at end of file
--- /dev/null
+from HelpableNumberActionMap import HelpableNumberActionMap
+from Components.config import config
+from __init__ import _
+from enigma import ePoint, eTimer, getDesktop
+
+class MovableScreen():
+ def __init__(self, configRoot, screenSize_x, screenSize_y, moveMinMargin=30, moveStepSize=10):
+ self.configRoot = configRoot
+ self.screenSize_x = screenSize_x
+ self.screenSize_y = screenSize_y
+ self.moveMinMargin = moveMinMargin
+ self.moveStepSize = moveStepSize
+
+ self["MovableScreenActions"] = HelpableNumberActionMap(self, "PluginAudioSyncActions",
+ {
+ "ok": (self.moveKeyOk, _("Save values and close screen")),
+ "cancel": (self.moveKeyCancel, _("Discard changes and close screen")),
+ "left": (self.moveKeyLeft, _("Move screen to the left")),
+ "right": (self.moveKeyRight, _("Move screen to the right")),
+ "up": (self.moveKeyUp, _("Move screen up")),
+ "down": (self.moveKeyDown, _("Move screen down")),
+ "red": (self.moveKeyCancel, _("Discard changes and close screen")),
+ "green": (self.moveKeyOk, _("Save values and close screen")),
+ "1": (self.moveKeyNumber, _("Move screen to the upper left corner")),
+ "2": (self.moveKeyNumber, _("Center screen at the upper border")),
+ "3": (self.moveKeyNumber, _("Move screen to the upper right corner")),
+ "4": (self.moveKeyNumber, _("Move screen to the middle of the left border")),
+ "5": (self.moveKeyNumber, _("Move screen to the center of your TV")),
+ "6": (self.moveKeyNumber, _("Move screen to the middle of the right border")),
+ "7": (self.moveKeyNumber, _("Move screen to the lower left corner")),
+ "8": (self.moveKeyNumber, _("Center screen at the lower border")),
+ "9": (self.moveKeyNumber, _("Move screen to the lower right corner")),
+ "0": (self.moveKeyNumber, _("Reset saved position"))
+ }, -1)
+
+ self["MovableScreenActions"].setEnabled(False)
+
+ desktop = getDesktop(0)
+ self.desktopWidth = desktop.size().width()
+ self.desktopHeight = desktop.size().height()
+
+
+ def startMoving(self,disableKeymaps):
+ self.disableKeymaps = disableKeymaps
+ self.switchKeymaps(False)
+
+ self.moveTimer = eTimer()
+ self.moveTimer.callback.append(self.movePositionTimer)
+ self.moveTimer.start(50, 1)
+
+ def movePositionTimer(self):
+ if self.configRoot.position_x.value == 0 and self.configRoot.position_y.value == 0:
+ self.configRoot.position_x.value = (self.desktopWidth - self.screenSize_x)/2
+ self.configRoot.position_y.value = self.moveMinMargin
+ self.instance.move(ePoint(self.configRoot.position_x.value, self.configRoot.position_y.value))
+
+ self.moveTimer.start(50, 1)
+
+ def movePosition(self):
+ if self.configRoot.position_x.value != 0 or self.configRoot.position_y.value != 0:
+ self.instance.move(ePoint(self.configRoot.position_x.value, self.configRoot.position_y.value))
+
+ def moveKeyLeft(self):
+ value = self.configRoot.position_x.value
+ value -= self.moveStepSize
+ if value < 0:
+ value = 0
+ self.configRoot.position_x.value = value
+
+ def moveKeyUp(self):
+ value = self.configRoot.position_y.value
+ value -= self.moveStepSize
+ if value < 0:
+ value = 0
+ self.configRoot.position_y.value = value
+
+ def moveKeyRight(self):
+ value = self.configRoot.position_x.value
+ value += self.moveStepSize
+ if value > self.desktopWidth:
+ value = self.desktopWidth
+ self.configRoot.position_x.value = value
+
+ def moveKeyDown(self):
+ value = self.configRoot.position_y.value
+ value += self.moveStepSize
+ if value > self.desktopHeight:
+ value = self.desktopHeight
+ self.configRoot.position_y.value = value
+
+ def moveKeyNumber(self, number):
+ #x- Positioning
+ if number in (1,4,7):
+ iPosX = self.moveMinMargin
+ elif number in (2,5,8,0):
+ iPosX = (self.desktopWidth - self.screenSize_x)/2
+ else:
+ iPosX = self.desktopWidth - self.moveMinMargin - self.screenSize_x
+
+ self.configRoot.position_x.value = iPosX
+
+ #y- positioning
+ if number in (0,1,2,3):
+ iPosY = self.moveMinMargin
+ elif number in (4,5,6):
+ iPosY = (self.desktopHeight - self.screenSize_y)/2
+ elif number in (7,8,9):
+ iPosY = self.desktopHeight - self.moveMinMargin - self.screenSize_y
+
+ self.configRoot.position_y.value = iPosY
+
+ def moveKeyOk(self):
+ self.configRoot.position_x.save()
+ self.configRoot.position_y.save()
+ self.switchKeymaps(True)
+
+ def moveKeyCancel(self):
+ self.configRoot.position_x.cancel()
+ self.configRoot.position_y.cancel()
+ self.switchKeymaps(True)
+
+ def switchKeymaps(self,enabled):
+ for keymap in self.disableKeymaps:
+ keymap.setEnabled(enabled)
+ self["MovableScreenActions"].setEnabled(not(enabled))
\ No newline at end of file