SharkyEXE icon

Untitled

SharkyEXE | PRO | 12/27/18 10:17:03 AM UTC | 0 ⭐ | 742 👁️ | Never ⏰ | []
text |

5.99 KB

|

None

|

0 👍

/

0 👎

# -*- coding: utf-8 -*-
# Не удалять эту строку - для правильного определения кодировки " 65001 (UTF-8) без BOM "
from Components.config import config, ConfigNumber, ConfigSubsection, ConfigYesNo
from Plugins.Plugin import PluginDescriptor
 from . import _
  config.plugins.Animation = ConfigSubsection()
config.plugins.Animation.enabled = ConfigYesNo(default=False)
config.plugins.Animation.delay = ConfigNumber(default=500)
config.plugins.Animation.aspect = ConfigYesNo(default=True)
  ##From Animation.py##
 from os.path import exists
 from enigma import ePicLoad, eTimer, getDesktop
from Components.config import config
from Components.Pixmap import Pixmap
from Screens.Screen import Screen
from Tools.Directories import resolveFilename, SCOPE_PLUGINS
  class AnimationScreen(Screen):
	def __init__(self, session):
		Screen.__init__(self, session)
		self.screenWidth = getDesktop(0).size().width()
		self.screenHeight = getDesktop(0).size().height()
		self.skin = """<screen position="fill" zPosition="-7" flags="wfNoBorder" backgroundColor="#ffffffff">
					<widget name="Animation" position="0,0" size="%s,%s" transparent="1"/>
				</screen>""" % (self.screenWidth, self.screenHeight)
		self['Animation'] = Pixmap()
		self['Animation'].hide()
		self.pixmapCount = 0
		self.picload = None
		self.pixmaps = {}
		if config.plugins.Animation.aspect.value:
			from Components.AVSwitch import AVSwitch
			self.sc = AVSwitch().getFramebufferScale()
		else:
			self.sc = [0, 0]
		self.pixmapTaimer = eTimer()
		self.pixmapTaimer.timeout.callback.append(self.updatePixmaps)
		self.animeTimer = eTimer()
		self.animeTimer.callback.append(self.startAnimation)
		self.onLayoutFinish.append(self.decodeAllPixmaps)
 	def decodeAllPixmaps(self):
		animePixmap = resolveFilename(SCOPE_PLUGINS,
			'Extensions/Animation/anime/anime-%02d.png' % self.pixmapCount)
		if exists(animePixmap):
			self.decodePixmap(animePixmap)
		else:
			if self.pixmapCount == 0:
				print '[AnimationScreen] ERROR: Pixmaps not fund', animePixmap
				self.close()
			else:
				self.pixmapCount = 0
				self['Animation'].show()
				self.animeTimer.start(config.plugins.Animation.delay.value, False)
 	def decodePixmap(self, animePixmap):
		self.picload = ePicLoad()
		self.picload.PictureData.get().append(self.finishDecode)
		self.picload.setPara((
			self.screenWidth, self.screenHeight,
			self.sc[0], self.sc[1], False, 1, '#ff000000'))
		self.picload.startDecode(animePixmap)
 	def finishDecode(self, picInfo=None):
		ptr = self.picload.getData()
		if ptr:
			self.pixmaps[self.pixmapCount] = ptr
			self.picload = None
			self.pixmapTaimer.start(1)
 	def updatePixmaps(self):
		self.pixmapTaimer.stop()
		if self.picload is not None:
			self.pixmapTaimer.start(1)
		else:
			self.pixmapCount += 1
			self.decodeAllPixmaps()
 	def startAnimation(self):
		self['Animation'].instance.setPixmap(self.pixmaps[self.pixmapCount].__deref__())
		self.pixmapCount += 1
		if self.pixmapCount == len(self.pixmaps):
			self.pixmapCount = 0
  class Animation():
	def __init__(self):
		self.dialog = None
 	def startSession(self, session):
		self.dialog = session.instantiateDialog(AnimationScreen)
		self.dialog.show()
 	def stopSession(self, session):
		session.deleteDialog(self.dialog)
		self.dialog = None
  AnimationSession = Animation()
  ##From AnimationSetup.py##
 from Components.ActionMap import ActionMap
from Components.config import config, getConfigListEntry
from Components.ConfigList import ConfigListScreen
from Components.Label import Label
from Components.Sources.StaticText import StaticText
from Screens.Screen import Screen
 from . import _
#from Animation import AnimationSession
  class AnimationSetup(ConfigListScreen, Screen):
	def __init__(self, session):
		Screen.__init__(self, session)
		self.session = session
		self.skinName = ['AnimationSetup', 'Setup']
		self['key_red'] = StaticText(_('Cancel'))
		self['key_green'] = StaticText(_('Ok'))
		self['description'] = Label('')
		self['setupActions'] = ActionMap(['SetupActions', 'ColorActions'],
			{
				'cancel': self.keyCancel,
				'red': self.keyCancel,
				'ok': self.ok,
				'green': self.ok
			}, -2)
		configlist = []
		ConfigListScreen.__init__(self, configlist, session=session)
		configlist.append(getConfigListEntry(_('Start animation'),
			config.plugins.Animation.enabled,
			_('Start showing an animation.\nIt will work also after restart.')))
		configlist.append(getConfigListEntry(_('Dealey between animations'),
			config.plugins.Animation.delay,
			_('How long you will see one animated picture.\nAnimation will be faster at less value.')))
		configlist.append(getConfigListEntry(_('Keep aspect ratio'),
			config.plugins.Animation.aspect,
			_('Keep animation picture aspect ratio when scale it over the whole screen.')))
		self['config'].list = configlist
		self['config'].l.setList(configlist)
		self.setTitle(_('Animation setup'))
 	def ok(self):
		if AnimationSession.dialog is not None:
			AnimationSession.stopSession(self.session)
		if config.plugins.Animation.delay.value < 1:
			config.plugins.Animation.delay.value = 1
		if config.plugins.Animation.enabled.value:
			AnimationSession.startSession(self.session)
		self.keySave()
  #####################
  def sessionstart(reason, **kwargs):
	if reason == 0:
		#from Animation import AnimationSession
		AnimationSession.startSession(kwargs['session'])
  def main(session, **kwargs):
	#from AnimationSetup import AnimationSetup
	session.open(AnimationSetup)
  def Plugins(**kwargs):
	plugin = [PluginDescriptor(
			name=_('Snow'),
			description=_('Show the "Snow" on the screen'),
			where=[PluginDescriptor.WHERE_PLUGINMENU],
				#PluginDescriptor.WHERE_EXTENSIONSMENU],
			icon='plugin.png',
			fnc=main)]
	if config.plugins.Animation.enabled.value:
		plugin.append(PluginDescriptor(
			where=[PluginDescriptor.WHERE_SESSIONSTART],
			fnc=sessionstart))
	return plugin

Comments