TEST Nuova Ricerca Globale

This commit is contained in:
Alhaziel01
2020-11-14 19:07:40 +01:00
parent 131e7f55f7
commit e974ab740f
10 changed files with 660 additions and 4 deletions
+5
View File
@@ -135,6 +135,11 @@ def run(item=None):
from platformcode import infoplus from platformcode import infoplus
return infoplus.Main(item) return infoplus.Main(item)
# elif item.channel == "search" and item.action == 'new_search':
# from specials import search
# item.mode = 'all'
# return search.new_search(item)
elif item.channel == "backup": elif item.channel == "backup":
from platformcode import backup from platformcode import backup
return getattr(backup, item.action)(item) return getattr(backup, item.action)(item)
+1
View File
@@ -81,6 +81,7 @@
<!-- Search --> <!-- Search -->
<category label="60423"> <category label="60423">
<setting label="60422" type="lsep"/> <setting label="60422" type="lsep"/>
<setting id="new_search" type="bool" label="Nuova ricerca Globale" default="false" visible="true"/>
<setting id="last_search" type="bool" label="60678" default="true" visible="true"/> <setting id="last_search" type="bool" label="60678" default="true" visible="true"/>
<setting id="saved_searches_limit" type="slider" option="int" range="10,10,40" label="60677" default="10" visible="eq(-1,0)" subsetting="true"/> <setting id="saved_searches_limit" type="slider" option="int" range="10,10,40" label="60677" default="10" visible="eq(-1,0)" subsetting="true"/>
<setting id="result_mode" type="select" label="60657" lvalues="60675|60676" default="0"/> <setting id="result_mode" type="select" label="60657" lvalues="60675|60676" default="0"/>
@@ -0,0 +1,373 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<window>
<controls>
<!-- control groups -->
<control type='group' id="1"/>
<control type='group' id="2"/>
<control type='group' id="3"/>
<!-- CLOSE BUTTON / BACKGROUND -->
<control type="button">
<left>0</left>
<top>0</top>
<width>100%</width>
<height>100%</height>
<texturefocus colordiffuse="FF232323">white.png</texturefocus>
<texturenofocus colordiffuse="FF232323">white.png</texturenofocus>
<animation effect="fade" time="200">WindowOpen</animation>
<animation effect="fade" time="200">WindowClose</animation>
<onclick>Action(close)</onclick>
</control>
<!-- GROUP CONTROLS -->
<control type="group">
<left>0</left>
<top>0</top>
<animation type="WindowOpen" reversible="false">
<effect type="fade" delay="160" end="100" time="300" />
</animation>
<animation type="WindowClose" reversible="false">
<effect type="fade" delay="160" start="100" end="0" time="300" />
</animation>
<!-- LOADING -->
<control type="image">
<top>355</top>
<left>490</left>
<width>300</width>
<height>10</height>
<texture>white.png</texture>
<visible allowhiddenfocus="true">!Integer.IsGreater(Container(102).NumItems, 0)</visible>
<animation effect="zoom" pulse="true" center="auto" start="0,100" end="100,100" time="1000" condition="!Integer.IsGreater(Container(200).NumItems, 0)">Conditional</animation>
</control>
<!-- FANART -->
<control type="image">
<width>100%</width>
<height>100%</height>
<aspectratio>center</aspectratio>
<texture colordiffuse="FF555555">$INFO[Container(103).ListItem.Property(fanart)]</texture>
</control>
<!-- SEARCH -->
<control type="group" id="10">
<visible>Control.IsVisible(1)</visible>
<!-- MAIN TITLE -->
<control type="textbox" id='101'>
<left>30</left>
<top>30</top>
<width>1000</width>
<height>30</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<visible allowhiddenfocus="true">Integer.IsGreater(Container(102).NumItems, 0)</visible>
<align>left</align>
<aligny>center</aligny>
</control>
<!-- RESULTS -->
<control type="group">
<visible>Integer.IsGreater(Container(102).NumItems, 0)</visible>
<animation effect="fade" time="200">Visible</animation>
<!-- Title -->
<control type="textbox">
<left>400</left>
<top>90</top>
<width>840</width>
<height>30</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<label>$INFO[Container(103).ListItem.Label] [B][COLOR FFAAAAAA]($INFO[Container(103).CurrentItem]/$INFO[Container(103).NumItems])[/COLOR][/B]</label>
<align>left</align>
<aligny>center</aligny>
</control>
<!-- Plot -->
<control type="textbox">
<left>400</left>
<top>150</top>
<width>840</width>
<height>170</height>
<font>font13</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<label>$INFO[Container(103).ListItem.Property(plot)]</label>
<align>left</align>
</control>
<control type="fixedlist" id="103">
<bottom>70</bottom>
<left>0</left>
<width>100%</width>
<height>570</height>
<ondown>102</ondown>
<orientation>horizontal</orientation>
<scrolltime tween="cubic" easing="out">300</scrolltime>
<itemlayout height="570" width="180">
<!-- Poster -->
<control type="image">
<bottom>0</bottom>
<left>0</left>
<width>180</width>
<height>270</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<bordersize>10</bordersize>
<aspectratio>scale</aspectratio>
</control>
</itemlayout>
<focusedlayout height="570" width="380">
<!-- Poster -->
<control type="image">
<bottom>0</bottom>
<left>0</left>
<width>380</width>
<height>570</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<bordersize>10</bordersize>
<aspectratio>scale</aspectratio>
</control>
</focusedlayout>
</control>
</control>
<!-- CHANNELS-->
<control type="group">
<bottom>-100</bottom>
<width>100%</width>
<height>150</height>
<animation effect="slide" start="0,150" time="500" condition="Integer.IsGreater(Container(102).NumItems, 0)">Conditional</animation>
<animation effect="slide" start="0,-100" time="200" condition="!Control.HasFocus(102)">Conditional</animation>
<control type="image">
<width>100%</width>
<height>100%</height>
<animation effect="fade" start='100' end='0' time="200" condition="!Control.HasFocus(102)">Conditional</animation>
<texture colordiffuse="FF232323">white.png</texture>
</control>
<control type="image">
<width>100%</width>
<height>100%</height>
<texture colordiffuse="88232323">white.png</texture>
</control>
<control type="list" id="102">
<width>100%</width>
<height>150</height>
<onup>103</onup>
<orientation>horizontal</orientation>
<scrolltime tween="cubic" easing="out">300</scrolltime>
<itemlayout height="150" width="150">
<!-- Poster -->
<control type="image">
<bottom>0</bottom>
<left>0</left>
<width>150</width>
<height>150</height>
<texture colordiffuse="55FFFFFF">$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>scale</aspectratio>
</control>
<!-- Poster -->
<control type="image">
<top>0</top>
<right>0</right>
<width>40</width>
<height>40</height>
<texture colordiffuse="20232323">white.png</texture>
<aspectratio>scale</aspectratio>
</control>
<!-- Title -->
<control type="textbox">
<right>5</right>
<top>5</top>
<width>30</width>
<height>30</height>
<font>font30_title</font>
<textcolor>22FFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<label>[B]$INFO[ListItem.Property(results)][/B]</label>
<align>center</align>
<aligny>center</aligny>
</control>
</itemlayout>
<focusedlayout height="150" width="150">
<!-- Poster -->
<control type="image">
<top>0</top>
<left>0</left>
<width>150</width>
<height>150</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>scale</aspectratio>
</control>
<!-- Poster -->
<control type="image">
<top>0</top>
<right>0</right>
<width>40</width>
<height>40</height>
<texture colordiffuse="880082C2">white.png</texture>
<aspectratio>scale</aspectratio>
</control>
<!-- Title -->
<control type="textbox">
<right>5</right>
<top>5</top>
<width>30</width>
<height>30</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<label>[B]$INFO[ListItem.Property(results)][/B]</label>
<align>center</align>
<aligny>center</aligny>
</control>
</focusedlayout>
</control>
</control>
<!-- PROGRESS -->
<!-- <control type='image' id='100'/> -->
<control type="progress" id="100">
<top>0</top>
<left>-10</left>
<width>1330</width>
<height>7</height>
<reveal>false</reveal>
<lefttexture colordiffuse="10000000">white.png</lefttexture>
<righttexture colordiffuse="10000000">white.png</righttexture>
<texturebg colordiffuse="88232323">progress.png</texturebg>
<midtexture colordiffuse="FF0082C2">progress.png</midtexture>
<visible>Integer.IsGreater(Container(102).NumItems, 0)</visible>
</control>
<control type="textbox" id="104">
<top>30</top>
<right>30</right>
<width>200</width>
<height>40</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<align>right</align>
<aligny>center</aligny>
<visible>Integer.IsGreater(Container(102).NumItems, 0)</visible>
</control>
</control>
<!-- EPISODES -->
<control type="group" id="20">
<visible>Control.IsVisible(2)</visible>
</control>
<!-- SERVERS -->
<control type="group" id="30">
<visible>Control.IsVisible(3)</visible>
<control type="image">
<description>Poster</description>
<top>0</top>
<left>0</left>
<width>480</width>
<height>720</height>
<texture>$INFO[Container(103).ListItem.Property(thumb)]</texture>
</control>
<control type="textbox" id="99">
<description>Title</description>
<left>520</left>
<top>40</top>
<width>1150</width>
<height>30</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<align>left</align>
<aligny>center</aligny>
<label>$INFO[Container(103).ListItem.Label]</label>
</control>
<control type="list" id="300">
<bottom>40</bottom>
<left>520</left>
<width>700</width>
<height>570</height>
<!-- <orientation>horizontal</orientation> -->
<scrolltime tween="cubic" easing="out">300</scrolltime>
<itemlayout height="140" width="700">
<!-- Poster -->
<control type="image">
<top>5</top>
<left>5</left>
<width>120</width>
<height>120</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>scale</aspectratio>
</control>
<control type="image">
<top>35</top>
<left>150</left>
<width>60</width>
<height>60</height>
<texture>$INFO[ListItem.Property(quality)]</texture>
<aspectratio>scale</aspectratio>
</control>
<control type="textbox" id="99">
<description>Title</description>
<left>220</left>
<top>35</top>
<width>450</width>
<height>60</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<align>left</align>
<aligny>center</aligny>
<label>[B][COLOR FFAAAAAA]$INFO[ListItem.Property(servername)][/COLOR][/B]</label>
</control>
</itemlayout>
<focusedlayout height="140" width="700">
<control type="image">
<width>700</width>
<height>130</height>
<texture colordiffuse="88000000">white.png</texture>
<aspectratio>scale</aspectratio>
</control>
<!-- Poster -->
<control type="image">
<top>0</top>
<left>0</left>
<width>130</width>
<height>130</height>
<visible>Control.HasFocus(300)</visible>
<texture colordiffuse="$INFO[ListItem.Property(color)]">white.png</texture>
<aspectratio>scale</aspectratio>
</control>
<control type="image">
<top>5</top>
<left>5</left>
<width>120</width>
<height>120</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>scale</aspectratio>
</control>
<control type="image">
<top>35</top>
<left>150</left>
<width>60</width>
<height>60</height>
<texture>$INFO[ListItem.Property(quality)]</texture>
<aspectratio>scale</aspectratio>
</control>
<control type="textbox" id="99">
<description>Title</description>
<left>220</left>
<top>35</top>
<width>450</width>
<height>60</height>
<font>font30_title</font>
<textcolor>FFFFFFFF</textcolor>
<shadowcolor>00000000</shadowcolor>
<align>left</align>
<aligny>center</aligny>
<label>[B][COLOR FFAAAAAA]$INFO[ListItem.Property(servername)][/COLOR][/B]</label>
</control>
</focusedlayout>
</control>
</control>
</control>
<!-- GROUP CONTROLS END -->
</controls>
</window>
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 1.7 KiB

+281 -4
View File
@@ -18,12 +18,17 @@ if PY3:
else: else:
from concurrent_py2 import futures from concurrent_py2 import futures
from core.item import Item from core.item import Item
from core import tmdb, scrapertools, channeltools, filetools, jsontools from core import tmdb, scrapertools, channeltools, filetools, jsontools, servertools
from channelselector import get_thumb from channelselector import get_thumb
from platformcode import logger, config, platformtools, unify from platformcode import logger, config, platformtools, unify
from core.support import typo from core.support import typo
import xbmcgui
import gc import gc
import xbmc
from threading import Thread
from core.support import dbg
gc.disable() gc.disable()
info_language = ["de", "en", "es", "fr", "it", "pt"] # from videolibrary.json info_language = ["de", "en", "es", "fr", "it", "pt"] # from videolibrary.json
@@ -191,6 +196,8 @@ def channel_search(item):
return itemlist return itemlist
else: else:
filetools.remove(temp_search_file) filetools.remove(temp_search_file)
if config.get_setting('new_search'):
return Search(item)
searched_id = item.infoLabels['tmdb_id'] searched_id = item.infoLabels['tmdb_id']
@@ -199,10 +206,8 @@ def channel_search(item):
searching += channel_list searching += channel_list
searching_titles += channel_titles searching_titles += channel_titles
cnt = 0 cnt = 0
progress = platformtools.dialog_progress(config.get_localized_string(30993) % item.title, config.get_localized_string(70744) % len(channel_list) + '\n' + ', '.join(searching_titles)) progress = platformtools.dialog_progress(config.get_localized_string(30993) % item.title, config.get_localized_string(70744) % len(channel_list) + '\n' + ', '.join(searching_titles))
config.set_setting('tmdb_active', False) config.set_setting('tmdb_active', False)
search_action_list = [] search_action_list = []
module_dict = {} module_dict = {}
for ch in channel_list: for ch in channel_list:
@@ -810,4 +815,276 @@ def get_saved_searches():
else: else:
saved_searches_list = list(current_saved_searches_list) saved_searches_list = list(current_saved_searches_list)
return saved_searches_list return saved_searches_list
SearchWindows = []
def Search(item):
# if SearchWindows:
# SearchWindows[-1].doModal()
# SearchWindows[:-1]
# item.text = 'matrix'
SearchWindow('GlobalSearch.xml', config.get_runtime_path()).start(item)
# Actions
LEFT = 1
RIGHT = 2
UP = 3
DOWN = 4
EXIT = 10
BACKSPACE = 92
# Container
SEARCH = 1
EPISODES = 2
SERVERS = 3
# Search
PROGRESS = 100
MAINTITLE = 101
CHANNELS = 102
RESULTS = 103
COUNT = 104
# Servers
SERVERLIST = 300
# UHDIMG = 301
# FHDIMG = 302
# HDIMG = 303
# SDIMG = 304
# UHD = 305
# FHD = 306
# HD = 307
# SD = 308
class SearchWindow(xbmcgui.WindowXMLDialog):
def start(self, item):
self.exit = False
self.item = item
self.channels = []
self.results = {}
self.channelsList, self.channelsTitle = get_channels(item)
self.focus = SEARCH
self.doModal()
def getModule(self, channel):
try:
module = __import__('channels.%s' % channel, fromlist=["channels.%s" % channel])
mainlist = getattr(module, 'mainlist')(Item(channel=channel, global_search=True))
action = [elem for elem in mainlist if elem.action == "search" and (self.item.mode == 'all' or elem.contentType in [self.item.mode, 'undefined'])]
return module, action
except:
import traceback
logger.error('error importing/getting search items of ' + channel)
logger.error(traceback.format_exc())
def onInit(self):
self.CHANNELS = self.getControl(CHANNELS)
self.RESULTS = self.getControl(RESULTS)
self.PROGRESS = self.getControl(PROGRESS)
self.COUNT = self.getControl(COUNT)
self.MAINTITLE = self.getControl(MAINTITLE)
self.MAINTITLE.setText(typo(config.get_localized_string(30993).replace('...','') % '"%s"' % self.item.text, 'bold'))
self.SEARCH = self.getControl(SEARCH)
self.EPISODES = self.getControl(EPISODES)
self.SERVERS = self.getControl(SERVERS)
self.SERVERLIST = self.getControl(SERVERLIST)
self.moduleDict = {}
self.searchActions = []
self.Focus(self.focus)
if not self.channels:
with futures.ThreadPoolExecutor() as executor:
for channel in self.channelsList:
if self.exit: break
module, action = executor.submit(self.getModule, channel).result()
self.moduleDict[channel] = module
self.searchActions += action
self.executor = futures.ThreadPoolExecutor()
self.thread = Thread(target=self.search)
self.thread.start()
def search(self):
for i, searchAction in enumerate(self.searchActions):
if self.exit: break
self.update(i, searchAction.channel, self.executor.submit(get_channel_results, self.item, self.moduleDict, searchAction).result())
def Focus(self, focusid):
if focusid in [SEARCH]:
self.focus = CHANNELS
self.SEARCH.setVisible(True)
self.EPISODES.setVisible(False)
self.SERVERS.setVisible(False)
if focusid in [EPISODES]:
self.focus = focusid
self.SEARCH.setVisible(False)
self.EPISODES.setVisible(True)
self.SERVERS.setVisible(False)
if focusid in [SERVERS]:
self.focus = SERVERLIST
self.SEARCH.setVisible(False)
self.EPISODES.setVisible(False)
self.SERVERS.setVisible(True)
def update(self, i, channel, result):
if result[1]:
channelParams = channeltools.get_channel_parameters(channel)
name = channelParams['title']
if name not in self.results:
self.results[name] = [result[1], len(self.channels)]
item = xbmcgui.ListItem(name)
item.setProperty('thumb', channelParams['thumbnail'])
item.setProperty('position', '0')
item.setProperty('results', str(len(self.results[name][0])))
self.channels.append(item)
else:
self.results[name].append([result[1], len(self.channels)])
self.channels[int(self.results[name][1])].setProperty('results', str(len(self.results[name][0])))
pos = self.CHANNELS.getSelectedPosition()
self.CHANNELS.reset()
self.CHANNELS.addItems(self.channels)
self.CHANNELS.selectItem(pos)
if len(self.channels) == 1:
self.setFocusId(CHANNELS)
items = []
for result in self.results[name][0]:
item = xbmcgui.ListItem(result.title)
item.setProperty('thumb', result.thumbnail)
item.setProperty('fanart', result.fanart)
item.setProperty('plot', result.plot)
items.append(item)
self.RESULTS.addItems(items)
percent = (i + 1) / len(self.searchActions) * 100
self.PROGRESS.setPercent(percent)
self.COUNT.setText("%s/%s" %(i + 1, len(self.searchActions)))
def onAction(self, action):
action = action.getId()
focus = self.getFocusId()
if action in [LEFT, RIGHT] and focus in [CHANNELS]:
items = []
name = self.CHANNELS.getSelectedItem().getLabel()
subpos = int(self.CHANNELS.getSelectedItem().getProperty('position'))
for result in self.results[name][0]:
logger.info(result)
item = xbmcgui.ListItem(result.title)
item.setProperty('thumb', result.thumbnail)
item.setProperty('fanart', result.fanart)
item.setProperty('plot', result.plot)
items.append(item)
self.RESULTS.reset()
self.RESULTS.addItems(items)
self.RESULTS.selectItem(subpos)
if focus in [RESULTS]:
pos = self.RESULTS.getSelectedPosition()
self.CHANNELS.getSelectedItem().setProperty('position', str(pos))
if action in [BACKSPACE]:
if self.SERVERS.isVisible():
self.Focus(SEARCH)
self.setFocusId(RESULTS)
self.RESULTS.selectItem(self.pos)
else:
self.exit = True
self.close()
if action in [EXIT]:
self.exit = True
self.close()
def onClick(self, control_id):
if control_id in [CHANNELS]:
items = []
name = self.CHANNELS.getSelectedItem().getLabel()
subpos = int(self.CHANNELS.getSelectedItem().getProperty('position'))
for result in self.results[name][0]:
logger.info(result)
item = xbmcgui.ListItem(result.title)
item.setProperty('thumb', result.thumbnail)
item.setProperty('fanart', result.fanart)
item.setProperty('plot', result.plot)
items.append(item)
self.RESULTS.reset()
self.RESULTS.addItems(items)
self.RESULTS.selectItem(subpos)
if control_id in [RESULTS]:
name = self.CHANNELS.getSelectedItem().getLabel()
self.pos = self.RESULTS.getSelectedPosition()
item = self.results[name][0][self.pos]
logger.info('ITEM',item)
channel = __import__('channels.%s' % item.channel, fromlist=["channels.%s" % item.channel])
self.servers = getattr(channel, item.action)(item)
if config.get_setting('checklinks') and not config.get_setting('autoplay'):
checklinks_number = config.get_setting('checklinks_number')
self.servers = servertools.check_list_links(self.servers, checklinks_number)
uhd = []
fhd = []
hd = []
sd = []
unknown = []
for i, item in enumerate(self.servers):
if item.server:
color = scrapertools.find_single_match(item.alive, r'(FF[^\]]+)')
it = xbmcgui.ListItem(item.infoLabels['title'])
it.setProperty('channel', channeltools.get_channel_parameters(item.channel).get('title',''))
it.setProperty('action', item.action)
it.setProperty('thumb', "https://raw.githubusercontent.com/kodiondemand/media/master/resources/servers/%s.png" % item.server.lower())
it.setProperty('servername', servertools.get_server_parameters(item.server.lower()).get('name',item.server))
it.setProperty('server', item.server)
it.setProperty('url', item.url)
# it.setProperty('quality', item.quality)
it.setProperty('color', color if color else 'FF0082C2')
it.setProperty('index', str(i))
if item.quality in ['4k', '2160p', '2160', '4k2160p', '4k2160', '4k 2160p', '4k 2160', '2k']:
it.setProperty('quality', 'uhd.png')
uhd.append(it)
elif item.quality in ['fullhd', 'fullhd 1080', 'fullhd 1080p', 'full hd', 'full hd 1080', 'full hd 1080p', 'hd1080', 'hd1080p', 'hd 1080', 'hd 1080p', '1080', '1080p']:
it.setProperty('quality', 'Fhd.png')
fhd.append(it)
elif item.quality in ['hd', 'hd720', 'hd720p', 'hd 720', 'hd 720p', '720', '720p', 'hdtv']:
it.setProperty('quality', 'hd.png')
hd.append(it)
elif item.quality in ['sd', '480p', '480', '360p', '360', '240p', '240']:
it.setProperty('quality', 'sd.png')
sd.append(it)
else:
it.setProperty('quality', '')
unknown.append(it)
# dbg()
uhd.sort(key=lambda it: it.getProperty('server'))
fhd.sort(key=lambda it: it.getProperty('server'))
hd.sort(key=lambda it: it.getProperty('server'))
sd.sort(key=lambda it: it.getProperty('server'))
unknown.sort(key=lambda it: it.getProperty('server'))
serverlist = uhd + fhd + hd + sd + unknown
self.Focus(SERVERS)
self.SERVERLIST.reset()
self.SERVERLIST.addItems(serverlist)
self.setFocusId(SERVERLIST)
if control_id in [SERVERLIST]:
control = self.getControl(control_id).getSelectedItem()
index = int(self.getControl(control_id).getSelectedItem().getProperty('index'))
server = self.servers[index]
# server.player_mode = 3
self.close()
from platformcode.launcher import run
run(server)
while not platformtools.is_playing():
pass
while platformtools.is_playing():
pass
# dbg()
self.doModal()