This commit is contained in:
alfa_addon_10
2017-09-05 09:25:38 +02:00
23 changed files with 441 additions and 26 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.alfa" name="Alfa" version="1.9.4" provider-name="Alfa Addon">
<addon id="plugin.video.alfa" name="Alfa" version="1.9.5" provider-name="Alfa Addon">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.libtorrent" optional="true"/>
@@ -19,13 +19,18 @@
</assets>
<news>[B]Estos son los cambios para esta versión:[/B]
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
[I]- newpct1
- gnula.mobi
- divxtotal
- tvseriesdk
- maxipelis
[I]- allcalidad
- cinetux
- seriesdanko
- allpeliculas
- animeshd
- areadocumental
- cinefox
- cinefoxtv
- divxatope
- menu de acceso directo
- fix internos[/I]
[COLOR green]Gracias a [COLOR yellow]paeznet[/COLOR] por su colaboración en esta versión[/COLOR]
[COLOR green]Gracias a [COLOR yellow]dan83[/COLOR] por su colaboración en esta versión[/COLOR]
</news>
<description lang="es">Navega con Kodi por páginas web para ver sus videos de manera fácil.</description>
<summary lang="en">Browse web pages using Kodi</summary>

View File

@@ -139,3 +139,8 @@ def findvideos(item):
infoLabels={'title': item.fulltitle}, fulltitle=item.fulltitle,
extra="library"))
return itemlist
def play(item):
item.thumbnail = item.contentThumbnail
return [item]

View File

@@ -271,7 +271,7 @@ def findvideos(item):
idioma = IDIOMAS.get(idiomas_videos.get(language))
titulo = "%s [" + idioma + "] [" + calidad_videos.get(calidad) + "]"
itemlist.append(item.clone(action="play", title=titulo, url=url, extra=idioma))
itemlist.append(item.clone(action="play", title=titulo, url=url, language = idioma, extra=idioma))
# Enlace Descarga
patron = '<span class="movie-downloadlink-list" id_movies_types="([^"]+)" id_movies_servers="([^"]+)".*?id_lang=' \
@@ -280,7 +280,7 @@ def findvideos(item):
for calidad, servidor_num, language, url in matches:
idioma = IDIOMAS.get(idiomas_videos.get(language))
titulo = "[%s] [" + idioma + "] [" + calidad_videos.get(calidad) + "]"
itemlist.append(item.clone(action="play", title=titulo, url=url, extra=idioma))
itemlist.append(item.clone(action="play", title=titulo, url=url, language = idioma, extra=idioma))
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
itemlist.sort(key=lambda item: (item.extra, item.server))
@@ -401,7 +401,7 @@ def findvideostv(item):
idioma = IDIOMAS.get(idiomas_videos.get(language))
titulo = "%s [" + idioma + "] (" + calidad_videos.get(quality) + ")"
itemlist.append(item.clone(action="play", title=titulo, url=url, contentType="episode"))
itemlist.append(item.clone(action="play", title=titulo, url=url, language = idioma, contentType="episode"))
# Enlace Descarga
patron = '<span class="movie-downloadlink-list" id_movies_types="([^"]+)" id_movies_servers="([^"]+)".*?episode="%s' \
@@ -412,7 +412,7 @@ def findvideostv(item):
for quality, servidor_num, episode, language, url in matches:
idioma = IDIOMAS.get(idiomas_videos.get(language))
titulo = "%s [" + idioma + "] (" + calidad_videos.get(quality) + ")"
itemlist.append(item.clone(action="play", title=titulo, url=url, contentType="episode", server=server))
itemlist.append(item.clone(action="play", title=titulo, url=url, language = idioma,contentType="episode", server=server))
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
itemlist.sort(key=lambda item: (int(item.infoLabels['episode']), item.title))

4
plugin.video.alfa/channels/animeshd.py Executable file → Normal file
View File

@@ -162,7 +162,7 @@ def episodios(item):
for scrapedurl, scrapedlang, scrapedtitle in matches:
language = scrapedlang
title = scrapedtitle + ' (%s)' % language
title = scrapedtitle
url = scrapedurl
itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language))
return itemlist
@@ -176,7 +176,7 @@ def findvideos(item):
itemlist.extend(servertools.find_video_items(data=data))
for videoitem in itemlist:
title = item.title+' (%s)'%videoitem.server
title = item.title
videoitem.channel = item.channel
videoitem.title = title
videoitem.action = 'play'

15
plugin.video.alfa/channels/areadocumental.py Executable file → Normal file
View File

@@ -135,18 +135,19 @@ def entradas(item):
scrapedthumbnail = host + urllib.quote(scrapedthumbnail)
title = scrapedtitle
if "full_hd" in extra:
scrapedtitle += " [COLOR gold][3D][/COLOR]"
quality = "3D"
elif "720" in extra:
scrapedtitle += " [COLOR gold][720p][/COLOR]"
quality ='720'
else:
scrapedtitle += " [COLOR gold][SD][/COLOR]"
quality = 'SD'
year = year.replace("\xc2\xa0", "").replace(" ", "")
if not year.isspace() and year != "":
infolab['year'] = int(year)
scrapedtitle += " (" + year + ")"
itemlist.append(item.clone(action="findvideos", title=scrapedtitle, fulltitle=title,
url=scrapedurl, thumbnail=scrapedthumbnail, infoLabels=infolab))
itemlist.append(item.clone(action="findvideos", title=title, fulltitle=title,
url=scrapedurl, thumbnail=scrapedthumbnail, infoLabels=infolab, contentTitle =
title, quality = quality))
next_page = scrapertools.find_single_match(data2, '<a href="([^"]+)"> ></a>')
if next_page:
@@ -171,7 +172,7 @@ def findvideos(item):
url_sub = host + urllib.quote(url_sub)
title = "Ver video en [[COLOR %s]%s[/COLOR]] Sub %s" % (color3, quality, label)
itemlist.append(item.clone(action="play", server="directo", title=title,
url=url, subtitle=url_sub, extra=item.url, calidad=quality))
url=url, subtitle=url_sub, extra=item.url, quality=quality, language = label))
return itemlist

0
plugin.video.alfa/channels/cinefox.py Executable file → Normal file
View File

2
plugin.video.alfa/channels/cinefoxtv.py Executable file → Normal file
View File

@@ -164,7 +164,7 @@ def findvideos(item):
itemlist.extend(servertools.find_video_items(data=scrapedurl))
for videoitem in itemlist:
videoitem.title = item.contentTitle + ' (' + videoitem.server + ')'
videoitem.title = item.contentTitle
videoitem.channel = item.channel
videoitem.plot = info
videoitem.action = "play"

View File

@@ -307,6 +307,7 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item):
patron = '(?is)#(option-[^"]+).*?png">([^<]+)'
match = scrapertools.find_multiple_matches(data, patron)
for scrapedoption, language in match:
scrapedserver = ""
lazy = ""
if "lazy" in bloque1:
lazy = "lazy-"
@@ -314,7 +315,9 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item):
url = scrapertools.find_single_match(bloque1, patron)
if "goo.gl" in url:
url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location", "")
matches.append([url, "", "", language.strip(), t_tipo])
if "player" in url:
scrapedserver = scrapertools.find_single_match(url, 'player/(\w+)')
matches.append([url, scrapedserver, "", language.strip(), t_tipo])
bloque2 = scrapertools.find_single_match(data, '(?s)box_links.*?dt_social_single')
bloque2 = bloque2.replace("\t", "").replace("\r", "")
patron = '(?s)optn" href="([^"]+)'
@@ -369,7 +372,7 @@ def play(item):
data = httptools.downloadpage(item.url).data
scrapedurl = scrapertools.find_single_match(data, '<a href="(http[^"]+)')
if scrapedurl == "":
scrapedurl = scrapertools.find_single_match(data, '(?i)<frame src="(http[^"]+)')
scrapedurl = scrapertools.find_single_match(data, '(?i)frame.*?src="(http[^"]+)')
if scrapedurl == "":
scrapedurl = scrapertools.find_single_match(data, 'replace."([^"]+)"')
elif "goo.gl" in scrapedurl:

2
plugin.video.alfa/channels/divxatope.py Executable file → Normal file
View File

@@ -299,7 +299,7 @@ def findvideos(item):
if "partes" in title:
action = "extract_url"
new_item = Item(channel=item.channel, action=action, title=title, fulltitle=title, url=url,
thumbnail=thumbnail, plot=plot, parentContent=item)
thumbnail=thumbnail, plot=plot, parentContent=item, server = servername)
if comentarios.startswith("Ver en"):
itemlist_ver.append(new_item)
else:

View File

@@ -0,0 +1,92 @@
# -*- coding: utf-8 -*-
#------------------------------------------------------------
# XBMC Plugin
#------------------------------------------------------------
import xbmcgui
import xbmc
from platformcode import config
from core import filetools
main = None
MAIN_MENU = {
"news" : {"label" : "Novedades", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_news.png"), "order": 0},
"channels" : {"label" : "Canales", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_channels.png"), "order": 1},
"search" : {"label" : "Buscador", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_search.png"), "order": 2},
"favorites" : {"label" : "Favoritos", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_favorites.png"), "order": 3},
"videolibrary" : {"label" : "Videoteca", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_videolibrary.png"), "order": 4},
"downloads" : {"label" : "Descargas", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_downloads.png"), "order": 5},
"settings" : {"label" : "Configuración", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_setting_0.png"), "order": 6},
}
class Main(xbmcgui.WindowXMLDialog):
def __init__( self, *args, **kwargs ):
self.items = []
self.open = kwargs.get("open")
def onInit(self):
self.setCoordinateResolution(2)
if self.open:
for menuentry in MAIN_MENU.keys():
item = xbmcgui.ListItem(MAIN_MENU[menuentry]["label"])
item.setProperty("thumb",str(MAIN_MENU[menuentry]["icon"]))
item.setProperty("identifier",str(menuentry))
item.setProperty("order", str(MAIN_MENU[menuentry]["order"]))
self.items.append(item)
self.items.sort(key=lambda it:int(it.getProperty("order")))
self.getControl(32500).addItems(self.items)
self.setFocusId(32500)
self.open = False
def onClick(self,controlId):
if controlId == 32500:
identifier = self.getControl(32500).getSelectedItem().getProperty("identifier")
if identifier == "news":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJuZXdzIg0KfQ==")')
elif identifier == "channels":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAiZ2V0Y2hhbm5lbHR5cGVzIiwgDQogICAgImNoYW5uZWwiOiAiY2hhbm5lbHNlbGVjdG9yIg0KfQ==")')
elif identifier == "search":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJzZWFyY2giDQp9")')
elif identifier == "favorites":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJmYXZvcml0ZXMiDQp9")')
elif identifier == "videolibrary":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJ2aWRlb2xpYnJhcnkiDQp9")')
elif identifier == "downloads":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJkb3dubG9hZHMiDQp9")')
elif identifier == "settings":
self.close()
xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJzZXR0aW5nIg0KfQ==")')
def onAction(self,action):
#exit
global main
if action.getId() == 92 or action.getId() == 10:
main.close()
del main
if action.getId() == 117:
config.open_settings()
def start(item):
global main
main = Main('script-shortcut-menu.xml',config.get_runtime_path(),open=True)
main.doModal()

View File

@@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
import xbmcgui
import xbmcaddon
from platformcode import config
from core import filetools
from threading import Timer
class KeyListener(xbmcgui.WindowXMLDialog):
TIMEOUT = 10
def __new__(cls):
gui_api = tuple(map(int, xbmcaddon.Addon('xbmc.gui').getAddonInfo('version').split('.')))
file_name = "DialogNotification.xml" if gui_api >= (5, 11, 0) else "DialogKaiToast.xml"
return super(KeyListener, cls).__new__(cls, file_name, "")
def __init__(self):
self.key = None
def onInit(self):
try:
self.getControl(401).addLabel("Presiona la tecla a usar para abrir la ventana")
self.getControl(402).addLabel("Tienes %s segundos" % self.TIMEOUT)
except AttributeError:
self.getControl(401).setLabel("Presiona la tecla a usar para abrir la ventana")
self.getControl(402).setLabel("Tienes %s segundos" % self.TIMEOUT)
self.getControl(400).setImage(filetools.join(config.get_runtime_path(),"resources","images","matchcenter","matchcenter.png"))
def onAction(self, action):
code = action.getButtonCode()
self.key = None if code == 0 else str(code)
self.close()
@staticmethod
def record_key():
dialog = KeyListener()
timeout = Timer(KeyListener.TIMEOUT, dialog.close)
timeout.start()
dialog.doModal()
timeout.cancel()
key = dialog.key
del dialog
return key
def start():
tecla_guardada = config.get_setting("keymap_edit", "editor_keymap")
nuevakey = KeyListener().record_key()
if nuevakey and tecla_guardada != nuevakey:
from core import filetools
from platformcode import platformtools
import xbmc
file_xml = "special://profile/keymaps/alfa.xml"
data = '<keymap><global><keyboard><key id="%s">' % nuevakey + 'runplugin(plugin://' \
'plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAic3RhcnQiLCANCiAgICAiY2hhbm5lbCI6ICJtaW5pbWVudSIsIA0KICAgICJpbmZvTGFiZWxzIjoge30NCn0=)</key></keyboard></global></keymap>'
filetools.write(xbmc.translatePath(file_xml), data)
platformtools.dialog_notification("Tecla guardada", "Reinicia Kodi para que se apliquen los cambios")
from core import scrapertools
config.set_setting("keymap_edit", nuevakey, "editor_keymap")
file_idioma = filetools.join(config.get_runtime_path(), 'resources', 'language', 'Spanish', 'strings.xml')
data = filetools.read(file_idioma)
value_xml = scrapertools.find_single_match(data, '<string id="31100">([^<]+)<')
if "tecla" in value_xml:
data = data.replace(value_xml, 'Cambiar tecla/botón para abrir la ventana (Guardada: %s)' % nuevakey)
elif "key" in value_xml:
data = data.replace(value_xml, 'Change key/button to open the window (Saved: %s)' % nuevakey)
else:
data = data.replace(value_xml, 'Cambiamento di chiave/pulsante per aprire la finestra (Salvato: %s)' % nuevakey)
filetools.write(file_idioma, data)
return

View File

@@ -42,6 +42,9 @@ def run(item=None):
logger.info(item.tostring())
try:
if item.action == "editor_keymap":
from platformcode import editor_keymap
return editor_keymap.start()
# If item has no action, stops here
if item.action == "":

View File

@@ -265,4 +265,5 @@
<string id="30168">Cambios aplicados</string>
<string id="30169">Buscar</string>
<string id="30170">Actualizar canales:</string>
<string id="31100">Add key to open Shortcut</string>
</strings>

View File

@@ -262,5 +262,5 @@
<string id="30168">Cambios aplicados</string>
<string id="30169">Buscar</string>
<string id="30170">Actualizar canales:</string>
</strings>
<string id="31100">Añadir tecla para el menu Shortcut</string></strings>

5
plugin.video.alfa/resources/settings.xml Normal file → Executable file
View File

@@ -49,5 +49,8 @@
<setting label="Info de películas/series en menú contextual" type="lsep"/>
<setting id="infoplus" type="bool" label="Mostrar opción Infoplus:" default="true"/>
<setting id="extended_info" type="bool" label="Mostrar opción ExtendedInfo (Necesario addon externo):" default="false"/>
</category>
<setting label="Botones/Teclas de acceso (Cambios requieren reiniciar Kodi)" type="lsep"/>
<setting id="button_keymap" type="action" label="31100" action="RunPlugin(plugin://plugin.video.alfa/?ewogICAgImFjdGlvbiI6ICJlZGl0b3Jfa2V5bWFwIiwgCiAgICAiaW5mb0xhYmVscyI6IHt9Cn0%3D)" />
</category>
</settings>

View File

@@ -0,0 +1,229 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<window type="window">
<depth>0.52</depth>
<coordinates>
<left>147</left>
<top>180</top>
</coordinates>
<defaultcontrol always="true">32500</defaultcontrol>
<animation type="WindowOpen" reversible="false">
<effect type="zoom" start="80" end="100" center="960,540" delay="160" tween="back" time="240" />
<effect type="fade" delay="160" end="100" time="240" />
</animation>
<animation type="WindowClose" reversible="false">
<effect type="zoom" start="100" end="80" center="960,540" easing="in" tween="back" time="240" />
<effect type="fade" start="100" end="0" time="240" />
</animation>
<controls>
<control type="image">
<left>0</left>
<top>0</top>
<width>969</width>
<height>283</height>
<texture border="2">Shorcut/dialog-bg-solid.png</texture>
</control>
<control type="image">
<left>0</left>
<top>0</top>
<width>969</width>
<height>70</height>
<texture colordiffuse="FF12B2E7" border="2">Shorcut/white70.png</texture>
</control>
<control type="label" id="30000">
<textoffsetx>70</textoffsetx>
<left>-30</left>
<top>0</top>
<width>969</width>
<height>70</height>
<font>font20_title</font>
<label>Shortcut</label>
<align>left</align>
<aligny>center</aligny>
<shadowcolor>black</shadowcolor>
</control>
<control type="button">
<left>-1920</left>
<top>-1080</top>
<width>5760</width>
<height>3240</height>
<texturefocus>-</texturefocus>
<texturenofocus>-</texturenofocus>
<onclick>Action(close)</onclick>
</control>
<control type="button">
<description>button overlay to avoid closing in dialog area</description>
<left>0</left>
<top>0</top>
<width>969</width>
<height>283</height>
<texturefocus>-</texturefocus>
<texturenofocus>-</texturenofocus>
<onclick>noop</onclick>
</control>
<control type="radiobutton" id="32501">
<left>969</left>
<top>11</top>
<width>48</width>
<height>48</height>
<radiowidth>48</radiowidth>
<radioheight>48</radioheight>
<texturefocus>-</texturefocus>
<texturenofocus>-</texturenofocus>
<label></label>
<animation effect="slide" end="-70,0" time="0" condition="true">Conditional</animation>
<textureradioofffocus colordiffuse="EEFFFFFF">Shorcut/close.png</textureradioofffocus>
<textureradiooffnofocus colordiffuse="EEFFFFFF">Shorcut/logo.png</textureradiooffnofocus>
<textureradioonfocus colordiffuse="EEFFFFFF">Shorcut/close.png</textureradioonfocus>
<textureradioonnofocus colordiffuse="EEFFFFFF">Shorcut/logo.png</textureradioonnofocus>
<onclick>Action(close)</onclick>
<onup>32500</onup>
<ondown>32500</ondown>
</control>
<control type="group">
<control type="group">
<control type="image">
<left>-21</left>
<top>50</top>
<width>1011</width>
<height>253</height>
<texture border="40">Shorcut/dialogbutton-nofo.png</texture>
</control>
<control type="list" id="32500">
<left>-139</left>
<top>55</top>
<width>980</width>
<height>220</height>
<onup>32501</onup>
<ondown>61</ondown>
<orientation>horizontal</orientation>
<scrolltime>200</scrolltime>
<pagecontrol>61</pagecontrol>
<animation effect="slide" start="0,0" end="10,0" time="0" condition="true">Conditional</animation>
<animation effect="slide" end="120,0" time="0" condition="!Control.IsVisible(5)">Conditional</animation>
<itemlayout height="225" width="323">
<top>2</top>
<control type="image">
<top>5</top>
<left>10</left>
<width>347</width>
<height>260</height>
<texture border="40">Shorcut/button-nofo.png</texture>
</control>
<control type="image">
<left>30</left>
<top>149</top>
<width>306</width>
<height>75</height>
<texture colordiffuse="60FFFFFF">Shorcut/black.png</texture>
</control>
<control type="image">
<left>95</left>
<top>23</top>
<width>160</width>
<height>130</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
</control>
<control type="image">
<left>329</left>
<top>24</top>
<width>50</width>
<height>50</height>
<aspectratio>keep</aspectratio>
<texture>$INFO[ListItem.Overlay]</texture>
</control>
<control type="textbox">
<left>25</left>
<top>146</top>
<width>300</width>
<height>74</height>
<label>[COLOR grey]$INFO[ListItem.Label][/COLOR]</label>
<shadowcolor>text_shadow</shadowcolor>
<font>font12</font>
<align>center</align>
<aligny>center</aligny>
</control>
</itemlayout>
<focusedlayout height="225" width="323">
<control type="group">
<depth>0.10</depth>
<animation type="Focus" reversible="false">
<effect type="zoom" center="auto" start="100" end="108" time="250" tween="sine" />
</animation>
<animation type="UnFocus" reversible="false">
<effect type="zoom" center="auto" start="108" end="100" time="150" tween="sine" />
</animation>
<top>2</top>
<control type="image">
<width>340</width>
<height>245</height>
<texture border="40">Shorcut/button-nofo.png</texture>
<animation effect="fade" start="0" end="100" time="0">Unfocus</animation>
<animation effect="fade" start="100" end="0" time="0">Focus</animation>
</control>
<control type="image">
<width>340</width>
<height>237</height>
<texture border="40" colordiffuse="FF12B2E7">Shorcut/button-fo.png</texture>
<animation effect="fade" start="100" end="0" time="0">Unfocus</animation>
</control>
<control type="image">
<left>5</left>
<top>24</top>
<width>50</width>
<height>50</height>
<aspectratio>keep</aspectratio>
<texture>$INFO[ListItem.Overlay]</texture>
</control>
<control type="image">
<left>23</left>
<top>149</top>
<width>298</width>
<height>75</height>
<texture colordiffuse="60FFFFFF">Shorcut/black.png</texture>
</control>
<control type="image">
<left>95</left>
<top>23</top>
<width>160</width>
<height>130</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
</control>
<control type="textbox">
<left>25</left>
<top>146</top>
<width>300</width>
<height>74</height>
<font>font12</font>
<label>$INFO[ListItem.Label]</label>
<align>center</align>
<aligny>center</aligny>
</control>
</control>
</focusedlayout>
</control>
<control type="scrollbar" id="61">
<left>-122</left>
<top>280</top>
<width>972</width>
<height>15</height>
<texturesliderbackground colordiffuse="FFE6E6E6">Shorcut/white.png</texturesliderbackground>
<texturesliderbar colordiffuse="FF12D2E7">Shorcut/white.png</texturesliderbar>
<texturesliderbarfocus colordiffuse="FF12B2E7">Shorcut/white.png</texturesliderbarfocus>
<textureslidernib>-</textureslidernib>
<textureslidernibfocus>-</textureslidernibfocus>
<showonepage>false</showonepage>
<orientation>horizontal</orientation>
<onleft>32500</onleft>
<onright>32500</onright>
<ondown>32500</ondown>
<onup>32500</onup>
<animation effect="slide" end="120,0" time="0" condition="!Control.IsVisible(5)">Conditional</animation>
</control>
</control>
</control>
</controls>
</window>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B