The branch, dharma-pre has been updated
via eea2aa3e4b4cfe3c588721762a756333ecbae9f8 (commit)
from 24620a9fc308a2c580a4973d2b0fdf616a4fcc85 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=eea2aa3e4b4cfe3c588721762a756333ecbae9f8
commit eea2aa3e4b4cfe3c588721762a756333ecbae9f8
Author: Zeljko Ametovic <[email protected]>
Date: Mon Nov 29 13:30:14 2010 +0400
[script.mpdc] -0.9.9
- changed appearance slightly, according to forum requests
- added volume control
- displaying server stats in left panel
- added per-profile option, profile can be enabled/disabled to prevent
displaying in 'Select profile' dialog
diff --git a/script.mpdc/addon.xml b/script.mpdc/addon.xml
index 2c80879..099fdc8 100644
--- a/script.mpdc/addon.xml
+++ b/script.mpdc/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.mpdc"
name="MPD Client"
- version="0.9.8"
+ version="0.9.9"
provider-name="lzoubek">
<requires>
<import addon="xbmc.python" version="1.0"/>
diff --git a/script.mpdc/changelog.txt b/script.mpdc/changelog.txt
index ac3edfd..1381207 100644
--- a/script.mpdc/changelog.txt
+++ b/script.mpdc/changelog.txt
@@ -1,3 +1,8 @@
+[B]0.9.9[/B]
+- changed appearance slightly, according to forum requests
+- added volume control
+- displaying server stats in left panel
+- added per-profile option, profile can be enabled/disabled to prevent
displaying in 'Select profile' dialog
[B]0.9.8[/B]
- fixed deadlocks/hangs when autoplaying stream
- added context menu in current queue to be able to remove single tracks from
queue
diff --git a/script.mpdc/default.py b/script.mpdc/default.py
index 3513a4a..7bbddb2 100644
--- a/script.mpdc/default.py
+++ b/script.mpdc/default.py
@@ -20,31 +20,27 @@
# */
import sys,os
import xbmc,xbmcaddon,xbmcgui,xbmcplugin
-Addon = xbmcaddon.Addon(id=os.path.basename(os.getcwd()))
-
-__settings__ = xbmcaddon.Addon(id=os.path.basename(os.getcwd()))
-
-__language__ = __settings__.getLocalizedString
-
+__scriptid__ = 'script.mpdc'
+__addon__ = xbmcaddon.Addon(id=__scriptid__)
SERVER_LIST = 120
ACTION_CLOSE = [10]
STATUS = 100
SETTINGS = 101
-sys.path.append( os.path.join ( os.getcwd(), 'resources','lib') )
+sys.path.append( os.path.join ( __addon__.getAddonInfo('path'),
'resources','lib') )
import gui,mpd,dialog
STATUS_ON='on'
STATUS_OFF='off'
-STR_CONNECTING=Addon.getLocalizedString(30007)
-STR_CONNECTING_TITLE=Addon.getLocalizedString(30015)
-STR_SELECT_PROFILE=Addon.getLocalizedString(30008)
-STR_HOST_ONLINE=Addon.getLocalizedString(30009)
-STR_HOST_OFFLINE=Addon.getLocalizedString(30010)
+STR_CONNECTING=__addon__.getLocalizedString(30007)
+STR_CONNECTING_TITLE=__addon__.getLocalizedString(30015)
+STR_SELECT_PROFILE=__addon__.getLocalizedString(30008)
+STR_HOST_ONLINE=__addon__.getLocalizedString(30009)
+STR_HOST_OFFLINE=__addon__.getLocalizedString(30010)
class MpdProfile:
def __init__(self,profile_id):
self.id=profile_id
- self.addon = xbmcaddon.Addon(id=os.path.basename(os.getcwd()))
+ self.addon = xbmcaddon.Addon(id=__scriptid__)
self.name = self.addon.getSetting(self.id+'_name')
self.host = self.addon.getSetting(self.id+'_mpd_host')
self.port = self.addon.getSetting(self.id+'_mpd_port')
@@ -52,8 +48,12 @@ class MpdProfile:
self.password = self.addon.getSetting(self.id+'_mpd_pass')
self.status = STR_HOST_OFFLINE
self.stat = STATUS_OFF
+ self.enabled=False
+ if self.addon.getSetting(self.id+'_enabled') == 'true':
+ self.enabled=True
def update(self):
+ self.addon = xbmcaddon.Addon(id=__scriptid__)
self.name = self.addon.getSetting(self.id+'_name')
self.host = self.addon.getSetting(self.id+'_mpd_host')
self.port = self.addon.getSetting(self.id+'_mpd_port')
@@ -61,6 +61,11 @@ class MpdProfile:
self.password = self.addon.getSetting(self.id+'_mpd_pass')
self.status = STR_HOST_OFFLINE
self.stat=STATUS_OFF
+ self.enabled=False
+ if self.addon.getSetting(self.id+'_enabled') == 'true':
+ self.enabled=True
+ if not self.enabled:
+ return
try:
client = mpd.MPDClient()
client.connect(self.host,int(self.port))
@@ -97,11 +102,12 @@ class SelectMPDProfile ( xbmcgui.WindowXMLDialog ) :
break
percent = percent+33
p.update(percent)
- listitem = xbmcgui.ListItem( label=item.name)
- listitem.setProperty( 'id', item.id )
- listitem.setProperty( 'status', item.status )
- listitem.setProperty( 'stat', item.stat )
- self.getControl( SERVER_LIST ).addItem( listitem )
+ if item.enabled:
+ listitem = xbmcgui.ListItem( label=item.name)
+ listitem.setProperty( 'id', item.id )
+ listitem.setProperty( 'status', item.status )
+ listitem.setProperty( 'stat', item.stat )
+ self.getControl( SERVER_LIST ).addItem(
listitem )
self.getControl( STATUS ).setLabel( STR_SELECT_PROFILE )
p.close()
@@ -111,12 +117,12 @@ class SelectMPDProfile ( xbmcgui.WindowXMLDialog ) :
def onClick( self, controlId ):
if controlId == SETTINGS:
- Addon.openSettings()
+ __addon__.openSettings()
self.update_servers()
if controlId == SERVER_LIST:
seekid = self.getControl( SERVER_LIST
).getSelectedItem().getProperty('id')
if self.getControl( SERVER_LIST
).getSelectedItem().getProperty('stat') == STATUS_ON:
- ui = gui.GUI(
'mpd-client-main.xml',os.getcwd(), self.skin,seekid)
+ ui = gui.GUI(
'mpd-client-main.xml',__addon__.getAddonInfo('path'), self.skin,seekid)
ui.doModal()
del ui
@@ -126,13 +132,13 @@ if current_skin.find('pm3') > -1:
skin = 'PM3.HD'
if current_skin.find('transparency') > -1:
skin = 'transparency'
-skip_selector = Addon.getSetting('skip-selector')
+skip_selector = __addon__.getSetting('skip-selector')
if 'true' == skip_selector:
- ui = gui.GUI( 'mpd-client-main.xml',os.getcwd(), skin,'0')
+ ui = gui.GUI( 'mpd-client-main.xml',__addon__.getAddonInfo('path'),
skin,'0')
ui.doModal()
del ui
else:
- selectorUI = SelectMPDProfile( 'select-profile.xml',os.getcwd(), skin)
+ selectorUI = SelectMPDProfile(
'select-profile.xml',__addon__.getAddonInfo('path'), skin)
selectorUI.profiles = [MpdProfile('0'),MpdProfile('1'),MpdProfile('2')]
selectorUI.doModal()
del selectorUI
diff --git a/script.mpdc/resources/language/Czech/strings.xml
b/script.mpdc/resources/language/Czech/strings.xml
index 1564a6f..340e900 100644
--- a/script.mpdc/resources/language/Czech/strings.xml
+++ b/script.mpdc/resources/language/Czech/strings.xml
@@ -47,6 +47,8 @@
<string id="30039">Playing stream</string>
<!-- Do not translate - block end -->
<string id="30040">Zobrazovat Äas pÅehrávané skladby</string>
+ <string id="30041">Povolen (Profil bude zobrazen pÅi výbÄru)</string>
+ <string id="30042">Autorů : %sAlb : %sSkladeb : %sÄas : %s</string>
<string id="200">Fronta</string>
<string id="201">Soubory</string>
<string id="202">AutoÅi</string>
diff --git a/script.mpdc/resources/language/English/strings.xml
b/script.mpdc/resources/language/English/strings.xml
index f3e8178..406a7af 100644
--- a/script.mpdc/resources/language/English/strings.xml
+++ b/script.mpdc/resources/language/English/strings.xml
@@ -47,6 +47,8 @@
<string id="30039">Playing stream</string>
<!-- Do not translate - block end -->
<string id="30040">Show song progress when playing</string>
+ <string id="30041">Enabled (show this profile in selection dialog)</string>
+ <string id="30042">Artists : %sAlbums : %sTracks : %sDB Time :
%s</string>
<string id="200">Queue</string>
<string id="201">Files</string>
<string id="202">Artists</string>
diff --git a/script.mpdc/resources/lib/dialog.py
b/script.mpdc/resources/lib/dialog.py
index 1564403..8d3c894 100644
--- a/script.mpdc/resources/lib/dialog.py
+++ b/script.mpdc/resources/lib/dialog.py
@@ -30,7 +30,7 @@ SETTINGS = 101
class Dialog ( xbmcgui.WindowXMLDialog ) :
def __init__(self,*args,**kwargs):
- super(xbmcgui.WindowXMLDialog,
self).__init__('menu-dialog.xml',os.getcwd(),'Confluence','0')
+ super(xbmcgui.WindowXMLDialog,
self).__init__('menu-dialog.xml',xbmcaddon.Addon('script.mpdc').getAddonInfo('path'),'Confluence','0')
self.result = -1
self.list = []
self.title=''
diff --git a/script.mpdc/resources/lib/gui.py b/script.mpdc/resources/lib/gui.py
index b2a4ce0..ad56539 100644
--- a/script.mpdc/resources/lib/gui.py
+++ b/script.mpdc/resources/lib/gui.py
@@ -21,7 +21,9 @@
import sys,os,time,re,traceback
import xbmc,xbmcaddon,xbmcgui,xbmcplugin
import pmpd,mpd,dialog
-
+__scriptid__ = 'script.mpdc'
+__addon__ = xbmcaddon.Addon(id=__scriptid__)
+__scriptname__ = __addon__.getAddonInfo('name')
#get actioncodes from keymap.xml
ACTION_SELECT_ITEM = 7
ACTIONS = dict({
@@ -33,7 +35,9 @@ ACTIONS = dict({
'15':'self.client.previous()',
'34':'self._queue_item()',
'79':'self.client.play()',
- '117':'self._context_menu()'
+ '117':'self._context_menu()',
+ '88':'self._volume(88)',
+ '89':'self._volume(89)'
})
CLICK_ACTIONS = dict({
'668':'self.client.play()',
@@ -46,20 +50,23 @@ CLICK_ACTIONS = dict({
'702':'self.client.random(1)',
'703':'self.client.random(0)',
'704':'self._consume_mode_toggle()',
- '1103':'self._clear_queue()',
- '1102':'self._save_queue_as()',
'1401':'self._playlist_contextmenu()',
'1101':'self._playlist_on_click()',
'1301':'self._update_artist_browser(artist_item=self.getControl(1301).getSelectedItem())',
-
'1201':'self._update_file_browser(browser_item=self.getControl(1201).getSelectedItem())'
+
'1201':'self._update_file_browser(browser_item=self.getControl(1201).getSelectedItem())',
+ '671':'self._set_volume()'
})
+ACTION_VOLUME_UP=88
+ACTION_VOLUME_DOWN=89
# control IDs
STATUS = 100
+SERVER_STATS=1009
PLAY = 668
PAUSE = 670
PREV = 666
STOP = 667
-NEXT = 669
+NEXT = 669
+VOLUME = 671
REPEAT_OFF = 700
REPEAT_ON = 701
SHUFFLE_OFF = 702
@@ -67,51 +74,49 @@ SHUFFLE_ON = 703
CURRENT_PLAYLIST = 1101
FILE_BROWSER = 1201
PROFILE=101
-CLEAR_QUEUE=1103
-SAVE_QUEUE_AS=1102
PLAYLIST_BROWSER=1401
ARTIST_BROWSER=1301
RB_CONSUME_MODE=704
-SONG_PROGRESS=991
-SONG_PROGESS_GROUP=99
-SONG_PRORESS_TEXT=992
-Addon = xbmcaddon.Addon(id=os.path.basename(os.getcwd()))
-__scriptname__ = Addon.getAddonInfo('name')
-
+SONG_INFO_PROGRESS=991
+SONG_INFO_GROUP=99
+SONG_INFO_TIME=992
+SONG_INFO_ATRIST=993
+SONG_INFO_ALBUM=994
#String IDs
-STR_STOPPED=Addon.getLocalizedString(30003)
-STR_PAUSED=Addon.getLocalizedString(30004)
-STR_NOT_CONNECTED=Addon.getLocalizedString(30005)
-STR_CONNECTED_TO=Addon.getLocalizedString(30011)
-STR_PLAYING=Addon.getLocalizedString(30006)
-STR_PROFILE_NAME=Addon.getLocalizedString(30002)
-STR_CONNECTING_TITLE=Addon.getLocalizedString(30015)
-STR_DISCONNECTING_TITLE=Addon.getLocalizedString(30017)
-STR_GETTING_QUEUE=Addon.getLocalizedString(30016)
-STR_GETTING_PLAYLISTS=Addon.getLocalizedString(30019)
-STR_GETTING_ARTISTS=Addon.getLocalizedString(30020)
-STR_WAS_QUEUED=Addon.getLocalizedString(30018)
-STR_PLAYLIST_SAVED=Addon.getLocalizedString(30021)
-STR_SELECT_ACTION=Addon.getLocalizedString(30022)
-STR_LOAD_ADD=Addon.getLocalizedString(30023)
-STR_DELETE=Addon.getLocalizedString(30024)
-STR_LOAD_REPLACE=Addon.getLocalizedString(30025)
-STR_RENAME=Addon.getLocalizedString(30026)
-STR_Q__PLAYLIST_EXISTS=Addon.getLocalizedString(30027)
-STR_Q_OVERWRITE=Addon.getLocalizedString(30028)
-STR_UPDATE_LIBRARY=Addon.getLocalizedString(30029)
-STR_QUEUE_ADD=Addon.getLocalizedString(30030)
-STR_QUEUE_REPLACE=Addon.getLocalizedString(30031)
-STR_UPDATING_LIBRARY=Addon.getLocalizedString(30032)
-STR_REMOVE_FROM_QUEUE=Addon.getLocalizedString(30036)
-STR_SAVE_QUEUE_AS=Addon.getLocalizedString(30037)
-STR_CLEAR_QUEUE=Addon.getLocalizedString(30038)
-STR_PLAYING_STREAM=Addon.getLocalizedString(30039)
-STR_SAVE_AS=Addon.getLocalizedString(205)
+STR_STOPPED=__addon__.getLocalizedString(30003)
+STR_PAUSED=__addon__.getLocalizedString(30004)
+STR_NOT_CONNECTED=__addon__.getLocalizedString(30005)
+STR_CONNECTED_TO=__addon__.getLocalizedString(30011)
+STR_PLAYING=__addon__.getLocalizedString(30006)
+STR_PROFILE_NAME=__addon__.getLocalizedString(30002)
+STR_CONNECTING_TITLE=__addon__.getLocalizedString(30015)
+STR_DISCONNECTING_TITLE=__addon__.getLocalizedString(30017)
+STR_GETTING_QUEUE=__addon__.getLocalizedString(30016)
+STR_GETTING_PLAYLISTS=__addon__.getLocalizedString(30019)
+STR_GETTING_ARTISTS=__addon__.getLocalizedString(30020)
+STR_WAS_QUEUED=__addon__.getLocalizedString(30018)
+STR_PLAYLIST_SAVED=__addon__.getLocalizedString(30021)
+STR_SELECT_ACTION=__addon__.getLocalizedString(30022)
+STR_LOAD_ADD=__addon__.getLocalizedString(30023)
+STR_DELETE=__addon__.getLocalizedString(30024)
+STR_LOAD_REPLACE=__addon__.getLocalizedString(30025)
+STR_RENAME=__addon__.getLocalizedString(30026)
+STR_Q__PLAYLIST_EXISTS=__addon__.getLocalizedString(30027)
+STR_Q_OVERWRITE=__addon__.getLocalizedString(30028)
+STR_UPDATE_LIBRARY=__addon__.getLocalizedString(30029)
+STR_QUEUE_ADD=__addon__.getLocalizedString(30030)
+STR_QUEUE_REPLACE=__addon__.getLocalizedString(30031)
+STR_UPDATING_LIBRARY=__addon__.getLocalizedString(30032)
+STR_REMOVE_FROM_QUEUE=__addon__.getLocalizedString(30036)
+STR_SAVE_QUEUE_AS=__addon__.getLocalizedString(30037)
+STR_CLEAR_QUEUE=__addon__.getLocalizedString(30038)
+STR_PLAYING_STREAM=__addon__.getLocalizedString(30039)
+STR_SERVER_STATS=__addon__.getLocalizedString(30042)
+STR_SAVE_AS=__addon__.getLocalizedString(205)
class GUI ( xbmcgui.WindowXMLDialog ) :
def __init__( self, *args, **kwargs ):
- self.addon = xbmcaddon.Addon(id=os.path.basename(os.getcwd()))
+ self.addon = xbmcaddon.Addon(id=__scriptid__)
self.time_polling=False
if 'true' == self.addon.getSetting('time-polling'):
self.client = pmpd.PMPDClient(poll_time=True)
@@ -134,7 +139,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
if self.mpd_pass == '':
self.mpd_pass = None
self.is_play_stream = False
- if Addon.getSetting(self.profile_id+'_play_stream') == 'true':
+ if self.addon.getSetting(self.profile_id+'_play_stream') ==
'true':
self.is_play_stream = True
def onFocus (self,controlId ):
@@ -145,7 +150,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
self.getControl( PROFILE ).setLabel(self.profile_name)
self._connect()
def _connect(self):
- self.getControl(SONG_PROGESS_GROUP).setVisible(False)
+ self.getControl(SONG_INFO_GROUP).setVisible(False)
p = xbmcgui.DialogProgress()
p.create(STR_CONNECTING_TITLE,STR_CONNECTING_TITLE+'
'+self.mpd_host+':'+self.mpd_port)
p.update(0)
@@ -166,9 +171,11 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
return
print 'Connected'
try:
+ stats = self.client.stats()
+ self.getControl(SERVER_STATS).setLabel(STR_SERVER_STATS
%
(stats['artists']+'\n',stats['albums']+'\n',stats['songs']+'\n',self._format_time2(stats['db_playtime'])))
self.getControl ( STATUS ).setLabel(STR_CONNECTED_TO +'
'+self.mpd_host+':'+self.mpd_port )
p.update(25,STR_GETTING_QUEUE)
-
self._handle_changes(self.client,['playlist','player','options'])
+
self._handle_changes(self.client,['mixer','playlist','player','options'])
self._handle_time_changes(self.client,self.client.status())
p.update(50,STR_GETTING_PLAYLISTS)
self._update_file_browser()
@@ -215,6 +222,15 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
index = self.getControl( CURRENT_PLAYLIST ).size()-1
self.getControl(CURRENT_PLAYLIST).selectItem(index)
+ def _update_song_info(self,current, status):
+ self.getControl(SONG_INFO_GROUP).setVisible(self.time_polling)
+
self.update_fields(current,['artist','album','title','date','file'])
+ if current['artist']=='' or current['title']=='':
+
self.getControl(SONG_INFO_ATRIST).setLabel(current['file'])
+ else:
+
self.getControl(SONG_INFO_ATRIST).setLabel(current['artist']+' -
'+current['title'])
+ self.getControl(SONG_INFO_ALBUM).setLabel(current['album']+'
('+current['date']+')')
+
def
_update_artist_browser(self,artist_item=None,client=None,back=False):
select_index=0
index = self.getControl(ARTIST_BROWSER).getSelectedPosition()
@@ -281,6 +297,14 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
self.getControl(ARTIST_BROWSER).addItem(listitem)
self.getControl(ARTIST_BROWSER).selectItem(select_index)
+ def _volume(self,action):
+ if self._can_volume:
+ volume = int(self.client.status()['volume'])
+ if action == ACTION_VOLUME_DOWN:
+ self.client.setvol(volume - 5)
+ elif action == ACTION_VOLUME_UP:
+ self.client.setvol(volume + 5)
+
def _update_playlist_browser(self,playlists):
self.getControl(PLAYLIST_BROWSER).reset()
for item in playlists:
@@ -335,30 +359,44 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
if not status['state'] == 'stop' and self.time_polling:
time = status['time'].split(':')
percent = float(time[0]) / (float(time[1])/100 )
- self.getControl(SONG_PROGRESS).setPercent(percent)
-
self.getControl(SONG_PRORESS_TEXT).setLabel(self._format_time(time[0])+' -
'+self._format_time(time[1]))
+ self.getControl(SONG_INFO_PROGRESS).setPercent(percent)
+
self.getControl(SONG_INFO_TIME).setLabel(self._format_time(time[0])+' -
'+self._format_time(time[1]))
+
+ def _update_volume(self,state):
+ if state['volume']=='-1':
+ self.getControl(VOLUME).setVisible(False)
+ self._can_volume=False
+ else:
+ self._can_volume=True
+ self.getControl(VOLUME).setVisible(True)
+ self.getControl(VOLUME).setPercent(int(state['volume']))
+
+ def _update_player_controls(self,current,state):
+ if state['state'] =='play':
+ self.toggleVisible( PLAY, PAUSE )
+ self.getControl( STATUS ).setLabel(STR_PLAYING + ' : '
+ self._current_song(current))
+ self.update_playlist('play',current)
+ elif state['state'] == 'pause':
+ self.toggleVisible( PAUSE, PLAY )
+ self.getControl( STATUS ).setLabel(STR_PAUSED + ' : ' +
self._current_song(current))
+ self.update_playlist('pause',current)
+ elif state['state'] == 'stop':
+ self.getControl( STATUS ).setLabel(STR_STOPPED)
+ self.toggleVisible( PAUSE, PLAY )
+ self.update_playlist('stop',current)
def _handle_changes(self,poller_client,changes):
state = poller_client.status()
+# print state
+# print poller_client.playlistid(state['songid'])
print 'Handling changes - ' + str(changes)
for change in changes:
+ if change =='mixer':
+ self._update_volume(state)
if change == 'player':
current = poller_client.currentsong()
- if state['state'] =='play':
- self.toggleVisible( PLAY, PAUSE )
- self.getControl( STATUS
).setLabel(STR_PLAYING + ' : ' + self._current_song(current))
- self.update_playlist('play',current)
-
self.getControl(SONG_PROGESS_GROUP).setVisible(self.time_polling)
- elif state['state'] == 'pause':
- self.toggleVisible( PAUSE, PLAY )
- self.getControl( STATUS
).setLabel(STR_PAUSED + ' : ' + self._current_song(current))
- self.update_playlist('pause',current)
-
self.getControl(SONG_PROGESS_GROUP).setVisible(self.time_polling)
- elif state['state'] == 'stop':
- self.getControl( STATUS
).setLabel(STR_STOPPED)
- self.toggleVisible( PAUSE, PLAY )
- self.update_playlist('stop',current)
-
self.getControl(SONG_PROGESS_GROUP).setVisible(False)
+ self._update_song_info(current,state)
+ self._update_player_controls(current,state)
if change == 'options':
if state['repeat'] == '0':
self.toggleVisible( REPEAT_ON,
REPEAT_OFF )
@@ -383,6 +421,9 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
def _format_time(self,time):
return '%d:%02d' % ((int(time) / 60 ),(int(time) % 60))
+ def _format_time2(self,time):
+ minutes = (int(time) - ((int(time) / 3600) * 3600))/60
+ return '%d:%d:%02d' % ((int(time) / 3600 ),minutes,(int(time) %
60))
def toggleVisible(self,cFrom,cTo):
self.getControl( cFrom ).setVisible(False)
@@ -508,7 +549,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
self._start_media_player()
def _start_media_player(self):
- icon = os.path.join(os.getcwd(),'icon.png')
+ icon = os.path.join(__addon__.getAddonInfo('path'),'icon.png')
xbmc.executebuiltin("XBMC.Notification(%s,%s,5000,%s)" %
(__scriptname__,STR_PLAYING_STREAM,'icon.png'))
xbmc.executebuiltin('PlayMedia(%s)' % self.stream_url)
@@ -550,7 +591,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
self.client.rm(playlist)
def dialog(self,title,list):
- d = dialog.Dialog('menu-dialog.xml',os.getcwd(),self.skin,'0')
+ d =
dialog.Dialog('menu-dialog.xml',__addon__.getAddonInfo('path'),self.skin,'0')
d.list=list
d.title = title
d.doModal()
diff --git a/script.mpdc/resources/lib/pmpd.py
b/script.mpdc/resources/lib/pmpd.py
index e7c59a4..410e97d 100644
--- a/script.mpdc/resources/lib/pmpd.py
+++ b/script.mpdc/resources/lib/pmpd.py
@@ -51,6 +51,7 @@ class PMPDClient(object):
def disconnect(self):
print 'disconnecting'
+ self.callback = None
try:
self.client.close()
except:
diff --git a/script.mpdc/resources/settings.xml
b/script.mpdc/resources/settings.xml
index a2c3afa..96a2a6e 100644
--- a/script.mpdc/resources/settings.xml
+++ b/script.mpdc/resources/settings.xml
@@ -5,6 +5,7 @@
<setting label="30040" type="bool" id="time-polling"
default="true" />
</category>
<category label="30110">
+ <setting label="30041" type="bool" id="0_enabled"
default="true" />
<setting label="30002" type="text" id="0_name" default="Profile
1"/>
<setting label="30000" type="text" id="0_mpd_host"
default="localhost"/>
<setting label="30001" type="text" id="0_mpd_port"
default="6600"/>
@@ -13,6 +14,7 @@
<setting label="30033" type="text" id="0_stream_url" default=""
/>
</category>
<category label="30111">
+ <setting label="30041" type="bool" id="1_enabled"
default="true" />
<setting label="30002" type="text" id="1_name" default="Profile
2"/>
<setting label="30000" type="text" id="1_mpd_host"
default="localhost"/>
<setting label="30001" type="text" id="1_mpd_port"
default="6600"/>
@@ -21,6 +23,7 @@
<setting label="30033" type="text" id="1_stream_url" default=""
/>
</category>
<category label="30112">
+ <setting label="30041" type="bool" id="2_enabled"
default="true" />
<setting label="30002" type="text" id="2_name" default="Profile 3"/>
<setting label="30000" type="text" id="2_mpd_host"
default="localhost"/>
<setting label="30001" type="text" id="2_mpd_port"
default="6600"/>
diff --git a/script.mpdc/resources/skins/Confluence/720p/mpd-client-main.xml
b/script.mpdc/resources/skins/Confluence/720p/mpd-client-main.xml
index 774de24..0f8c52c 100644
--- a/script.mpdc/resources/skins/Confluence/720p/mpd-client-main.xml
+++ b/script.mpdc/resources/skins/Confluence/720p/mpd-client-main.xml
@@ -130,7 +130,18 @@
</control>
</focusedlayout>
</control>
+ <control type="label" id="1009">
+ <description>textarea</description>
+ <posx>20</posx>
+ <posy>400</posy>
+ <width>240</width>
+ <height>220</height>
+ <textcolor>white</textcolor>
+ <aligny>center</aligny>
+ </control>
</control>
+
+
<control type="group">
<posx>260</posx>
@@ -144,138 +155,147 @@
<texture border="40">ContentPanel.png</texture>
</control>
+ <control type="group">
+ <posx>750</posx>
+ <posy>25</posy>
+ <description>player control group</description>
+ <control type="button" id="666">
+ <posx>0</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDPrevTrackNF.png</texturenofocus>
+ <texturefocus>OSDPrevTrackFO.png</texturefocus>
+ <onright>667</onright>
+ <onleft>1000</onleft>
+ <ondown>1000</ondown>
+ </control>
+ <control type="button" id="667">
+ <posx>50</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDStopNF.png</texturenofocus>
+ <texturefocus>OSDStopFO.png</texturefocus>
+ <onleft>666</onleft>
+ <onright>668</onright>
+ <ondown>1000</ondown>
+ </control>
+ <control type="button" id="668">
+ <posx>100</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDPlayNF.png</texturenofocus>
+ <texturefocus>OSDPlayFO.png</texturefocus>
+ <onleft>667</onleft>
+ <onright>669</onright>
+ <ondown>1000</ondown>
+ </control>
+ <control type="button" id="670">
+ <posx>100</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDPauseNF.png</texturenofocus>
+ <texturefocus>OSDPauseFO.png</texturefocus>
+ <onleft>667</onleft>
+ <onright>669</onright>
+ <ondown>1000</ondown>
+ </control>
+ <control type="button" id="669">
+ <posx>150</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDNextTrackNF.png</texturenofocus>
+ <texturefocus>OSDNextTrackFO.png</texturefocus>
+ <onleft>668</onleft>
+ <ondown>1000</ondown>
+ <onright>702</onright>
+ </control>
+ <control type="progress" id="671">
+ <posx>0</posx>
+ <posy>55</posy>
+ <height>16</height>
+ <width>200</width>
+ </control>
+ </control>
+ <control type="group">
+ <posx>645</posx>
+ <posy>660</posy>
+ <description>playing control group</description>
+ <control type="button" id="702">
+ <posx>0</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDRandomOffNF.png</texturenofocus>
+ <texturefocus>OSDRandomOffFO.png</texturefocus>
+ <ondown>1000</ondown>
+ <onright>700</onright>
+ <onleft>669</onleft>
+ </control>
-
- <control type="button" id="666">
- <posx>20</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDPrevTrackNF.png</texturenofocus>
- <texturefocus>OSDPrevTrackFO.png</texturefocus>
- <onright>667</onright>
- <onleft>1000</onleft>
- <ondown>1000</ondown>
- </control>
-
- <control type="button" id="667">
- <posx>70</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDStopNF.png</texturenofocus>
- <texturefocus>OSDStopFO.png</texturefocus>
- <onleft>666</onleft>
- <onright>668</onright>
- <ondown>1000</ondown>
- </control>
-
- <control type="button" id="668">
- <posx>120</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDPlayNF.png</texturenofocus>
- <texturefocus>OSDPlayFO.png</texturefocus>
- <onleft>667</onleft>
- <onright>669</onright>
- <ondown>1000</ondown>
- </control>
- <control type="button" id="670">
- <posx>120</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDPauseNF.png</texturenofocus>
- <texturefocus>OSDPauseFO.png</texturefocus>
- <onleft>667</onleft>
- <onright>669</onright>
- <ondown>1000</ondown>
- </control>
-
- <control type="button" id="669">
- <posx>170</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDNextTrackNF.png</texturenofocus>
- <texturefocus>OSDNextTrackFO.png</texturefocus>
- <onleft>668</onleft>
- <ondown>1000</ondown>
- <onright>702</onright>
- </control>
-
- <control type="button" id="702">
- <posx>250</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDRandomOffNF.png</texturenofocus>
- <texturefocus>OSDRandomOffFO.png</texturefocus>
- <ondown>1000</ondown>
- <onright>700</onright>
- <onleft>669</onleft>
- </control>
-
- <control type="button" id="703">
- <posx>250</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDRandomOnNF.png</texturenofocus>
- <texturefocus>OSDRandomOnFO.png</texturefocus>
- <ondown>1000</ondown>
- <onright>700</onright>
- <onleft>669</onleft>
- </control>
-
-
- <control type="button" id="700">
- <posx>300</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDRepeatNF.png</texturenofocus>
- <texturefocus>OSDRepeatFO.png</texturefocus>
- <onright>704</onright>
- <onleft>702</onleft>
- <ondown>1000</ondown>
- </control>
+ <control type="button" id="703">
+ <posx>0</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDRandomOnNF.png</texturenofocus>
+ <texturefocus>OSDRandomOnFO.png</texturefocus>
+ <ondown>1000</ondown>
+ <onright>700</onright>
+ <onleft>669</onleft>
+ </control>
- <control type="button" id="701">
- <posx>300</posx>
- <posy>20</posy>
- <width>48</width>
- <height>48</height>
- <visible>true</visible>
- <texturenofocus>OSDRepeatAllNF.png</texturenofocus>
- <texturefocus>OSDRepeatAllFO.png</texturefocus>
- <onleft>702</onleft>
- <onright>704</onright>
- <ondown>1000</ondown>
- </control>
+ <control type="button" id="700">
+ <posx>50</posx>
+ <posy>0</posy>
+ <width>48</width>
+ <height>48</height>
+ <visible>true</visible>
+ <texturenofocus>OSDRepeatNF.png</texturenofocus>
+ <texturefocus>OSDRepeatFO.png</texturefocus>
+ <onright>704</onright>
+ <onleft>702</onleft>
+ <ondown>1000</ondown>
+ </control>
- <control type="radiobutton" id="704">
- <posx>350</posx>
- <posy>20</posy>
- <width>248</width>
+ <control type="button" id="701">
+ <posx>50</posx>
+ <posy>0</posy>
+ <width>48</width>
<height>48</height>
<visible>true</visible>
- <textoffsetx>10</textoffsetx>
- <textoffsety>0</textoffsety>
- <label>SCRIPT206</label>
- <onleft>700</onleft>
+ <texturenofocus>OSDRepeatAllNF.png</texturenofocus>
+ <texturefocus>OSDRepeatAllFO.png</texturefocus>
+ <onleft>702</onleft>
+ <onright>704</onright>
<ondown>1000</ondown>
</control>
+ <control type="radiobutton" id="704">
+ <posx>100</posx>
+ <posy>2</posy>
+ <width>248</width>
+ <height>42</height>
+ <visible>true</visible>
+ <textoffsetx>10</textoffsetx>
+ <textoffsety>0</textoffsety>
+ <label>SCRIPT206</label>
+ <onleft>700</onleft>
+ <ondown>1000</ondown>
+ </control>
+ </control>
+
<control type="label" id="111">
@@ -294,12 +314,11 @@
<description>textarea</description>
<posx>30</posx>
<posy>660</posy>
- <width>970</width>
+ <width>570</width>
<height>40</height>
<textcolor>white</textcolor>
<aligny>center</aligny>
</control>
-
<control type="image">
<posx>20</posx>
@@ -325,33 +344,6 @@
<description>playlist group</description>
<visible>Container(1000).HasFocus(1001)</visible>
- <control type="button" id="1103">
- <posx>600</posx>
- <posy>-60</posy>
- <width>160</width>
- <height>48</height>
- <align>center</align>
- <visible>true</visible>
- <label>SCRIPT204</label>
- <ondown>1101</ondown>
- <onright>1102</onright>
- <texturenofocus>button-nofocus.png</texturenofocus>
- <texturefocus>button-focus.png</texturefocus>
- </control>
- <control type="button" id="1102">
- <posx>770</posx>
- <posy>-60</posy>
- <width>160</width>
- <height>48</height>
- <align>center</align>
- <visible>true</visible>
- <label>SCRIPT205</label>
- <ondown>1101</ondown>
- <onleft>1103</onleft>
- <texturenofocus>button-nofocus.png</texturenofocus>
- <texturefocus>button-focus.png</texturefocus>
- </control>
-
<control type="list" id="1101">
<posx>0</posx>
<posy>0</posy>
@@ -372,7 +364,6 @@
<height>38</height>
<texture>MenuItemNF.png</texture>
</control>
-
<control type="image">
<posx>0</posx>
<posy>0</posy>
@@ -392,11 +383,10 @@
<align>left</align>
<info>ListItem.Property(file)</info>
</control>
-
<control type="label">
<posx>40</posx>
<posy>0</posy>
- <width>150</width>
+ <width>195</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -404,12 +394,10 @@
<align>left</align>
<info>ListItem.Property(artist)</info>
</control>
-
-
<control type="label">
- <posx>200</posx>
+ <posx>240</posx>
<posy>0</posy>
- <width>180</width>
+ <width>245</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -417,11 +405,10 @@
<align>left</align>
<info>ListItem.Property(album)</info>
</control>
-
<control type="label">
- <posx>395</posx>
+ <posx>490</posx>
<posy>0</posy>
- <width>600</width>
+ <width>535</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -429,7 +416,6 @@
<align>left</align>
<info>ListItem.Label</info>
</control>
-
<control type="label">
<posx>950</posx>
<posy>0</posy>
@@ -473,7 +459,7 @@
<control type="label">
<posx>40</posx>
<posy>0</posy>
- <width>150</width>
+ <width>195</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -481,11 +467,10 @@
<align>left</align>
<info>ListItem.Property(artist)</info>
</control>
-
<control type="label">
- <posx>200</posx>
+ <posx>240</posx>
<posy>0</posy>
- <width>180</width>
+ <width>245</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -493,11 +478,10 @@
<align>left</align>
<info>ListItem.Property(album)</info>
</control>
-
<control type="label">
- <posx>395</posx>
+ <posx>490</posx>
<posy>0</posy>
- <width>600</width>
+ <width>535</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -865,11 +849,31 @@
<control type="group" id="99">
<description>song progress info group</description>
<posx>280</posx>
- <posy>65</posy>
- <control type="label" id="992">
- <description>textarea</description>
- <posx>580</posx>
+ <posy>20</posy>
+ <control type="label" id="993">
+ <description>song artist</description>
+ <posx>0</posx>
<posy>0</posy>
+ <width>400</width>
+ <height>30</height>
+ <align>left</align>
+ <textcolor>white</textcolor>
+ <label></label>
+ </control>
+ <control type="label" id="994">
+ <description>song album</description>
+ <posx>0</posx>
+ <posy>30</posy>
+ <width>400</width>
+ <height>30</height>
+ <align>left</align>
+ <textcolor>white</textcolor>
+ <label></label>
+ </control>
+ <control type="label" id="992">
+ <description>song time</description>
+ <posx>680</posx>
+ <posy>30</posy>
<width>220</width>
<height>30</height>
<align>right</align>
@@ -878,8 +882,8 @@
</control>
<control type="progress" id="991">
<posx>0</posx>
- <posy>30</posy>
- <width>590</width>
+ <posy>60</posy>
+ <width>690</width>
<height>16</height>
</control>
</control>
diff --git a/script.mpdc/resources/skins/PM3.HD/720p/mpd-client-main.xml
b/script.mpdc/resources/skins/PM3.HD/720p/mpd-client-main.xml
index e4d10e4..d018ccc 100644
--- a/script.mpdc/resources/skins/PM3.HD/720p/mpd-client-main.xml
+++ b/script.mpdc/resources/skins/PM3.HD/720p/mpd-client-main.xml
@@ -55,12 +55,32 @@
</control>
<control type="group" id="99">
<description>song progress info group</description>
- <posx>255</posx>
- <posy>55</posy>
+ <posx>300</posx>
+ <posy>20</posy>
+ <control type="label" id="993">
+ <description>song artist</description>
+ <posx>0</posx>
+ <posy>0</posy>
+ <width>600</width>
+ <height>30</height>
+ <align>left</align>
+ <textcolor>white</textcolor>
+ <label></label>
+ </control>
+ <control type="label" id="994">
+ <description>song album</description>
+ <posx>0</posx>
+ <posy>30</posy>
+ <width>620</width>
+ <height>30</height>
+ <align>left</align>
+ <textcolor>white</textcolor>
+ <label></label>
+ </control>
<control type="label" id="992">
<description>textarea</description>
<posx>610</posx>
- <posy>0</posy>
+ <posy>30</posy>
<width>220</width>
<height>30</height>
<align>right</align>
@@ -69,7 +89,7 @@
</control>
<control type="progress" id="991">
<posx>0</posx>
- <posy>30</posy>
+ <posy>60</posy>
<width>620</width>
<height>10</height>
</control>
@@ -154,14 +174,23 @@
</control>
</focusedlayout>
</control>
+ <control type="label" id="1009">
+ <description>textarea</description>
+ <posx>20</posx>
+ <posy>400</posy>
+ <width>240</width>
+ <height>220</height>
+ <textcolor>white</textcolor>
+ <aligny>center</aligny>
+ </control>
</control>
<control type="group">
- <posx>100</posx>
- <posy>10</posy>
+ <posx>1000</posx>
+ <posy>25</posy>
<description>player control group</description>
<control type="button" id="666">
- <posx>20</posx>
- <posy>20</posy>
+ <posx>0</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -173,8 +202,8 @@
</control>
<control type="button" id="667">
- <posx>70</posx>
- <posy>20</posy>
+ <posx>50</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -186,8 +215,8 @@
</control>
<control type="button" id="668">
- <posx>120</posx>
- <posy>20</posy>
+ <posx>100</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -198,8 +227,8 @@
<ondown>1000</ondown>
</control>
<control type="button" id="670">
- <posx>120</posx>
- <posy>20</posy>
+ <posx>100</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -211,8 +240,8 @@
</control>
<control type="button" id="669">
- <posx>170</posx>
- <posy>20</posy>
+ <posx>150</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -222,10 +251,19 @@
<onright>702</onright>
<ondown>1000</ondown>
</control>
-
+ <control type="progress" id="671">
+ <posx>0</posx>
+ <posy>55</posy>
+ <height>10</height>
+ <width>200</width>
+ </control>
+</control>
+<control type="group">
+ <posx>930</posx>
+ <posy>670</posy>
<control type="button" id="702">
- <posx>250</posx>
- <posy>20</posy>
+ <posx>0</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -237,8 +275,8 @@
</control>
<control type="button" id="703">
- <posx>250</posx>
- <posy>20</posy>
+ <posx>0</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -250,8 +288,8 @@
</control>
<control type="button" id="700">
- <posx>300</posx>
- <posy>20</posy>
+ <posx>50</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -263,8 +301,8 @@
</control>
<control type="button" id="701">
- <posx>300</posx>
- <posy>20</posy>
+ <posx>50</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -276,8 +314,8 @@
</control>
<control type="radiobutton" id="704">
- <posx>350</posx>
- <posy>20</posy>
+ <posx>100</posx>
+ <posy>0</posy>
<width>248</width>
<height>48</height>
<visible>true</visible>
@@ -287,9 +325,6 @@
<onleft>700</onleft>
<ondown>1000</ondown>
</control>
-
-
-
</control>
<control type="group">
<posx>260</posx>
@@ -313,8 +348,8 @@
<control type="label" id="100">
<description>textarea</description>
<posx>35</posx>
- <posy>665</posy>
- <width>970</width>
+ <posy>670</posy>
+ <width>620</width>
<height>40</height>
<textcolor>white</textcolor>
<aligny>center</aligny>
@@ -328,34 +363,7 @@
<height>530</height>
<description>playlist group</description>
<visible>Container(1000).HasFocus(1001)</visible>
-
- <control type="button" id="1103">
- <posx>600</posx>
- <posy>-80</posy>
- <width>160</width>
- <height>48</height>
- <align>center</align>
- <visible>true</visible>
- <label>SCRIPT204</label>
- <ondown>1101</ondown>
- <onright>1102</onright>
- <texturenofocus>button-nofocus.png</texturenofocus>
- <texturefocus>button-focus2.png</texturefocus>
- </control>
- <control type="button" id="1102">
- <posx>770</posx>
- <posy>-80</posy>
- <width>160</width>
- <height>48</height>
- <align>center</align>
- <visible>true</visible>
- <label>SCRIPT205</label>
- <ondown>1101</ondown>
- <onleft>1103</onleft>
- <texturenofocus>button-nofocus.png</texturenofocus>
- <texturefocus>button-focus2.png</texturefocus>
- </control>
-
+
<control type="list" id="1101">
<posx>0</posx>
<posy>0</posy>
@@ -392,7 +400,7 @@
<control type="label">
<posx>40</posx>
<posy>0</posy>
- <width>150</width>
+ <width>200</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -403,9 +411,9 @@
<control type="label">
- <posx>200</posx>
+ <posx>245</posx>
<posy>0</posy>
- <width>180</width>
+ <width>260</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -415,9 +423,9 @@
</control>
<control type="label">
- <posx>395</posx>
+ <posx>510</posx>
<posy>0</posy>
- <width>600</width>
+ <width>480</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -469,7 +477,7 @@
<control type="label">
<posx>40</posx>
<posy>0</posy>
- <width>150</width>
+ <width>200</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -479,9 +487,9 @@
</control>
<control type="label">
- <posx>200</posx>
+ <posx>245</posx>
<posy>0</posy>
- <width>180</width>
+ <width>260</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -491,9 +499,9 @@
</control>
<control type="label">
- <posx>395</posx>
+ <posx>510</posx>
<posy>0</posy>
- <width>600</width>
+ <width>480</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
diff --git a/script.mpdc/resources/skins/transparency/720p/mpd-client-main.xml
b/script.mpdc/resources/skins/transparency/720p/mpd-client-main.xml
index 86b78de..12d11f4 100644
--- a/script.mpdc/resources/skins/transparency/720p/mpd-client-main.xml
+++ b/script.mpdc/resources/skins/transparency/720p/mpd-client-main.xml
@@ -56,11 +56,31 @@
<control type="group" id="99">
<description>song progress info group</description>
<posx>260</posx>
- <posy>60</posy>
+ <posy>15</posy>
+ <control type="label" id="993">
+ <description>song artist</description>
+ <posx>0</posx>
+ <posy>0</posy>
+ <width>600</width>
+ <height>30</height>
+ <align>left</align>
+ <textcolor>white</textcolor>
+ <label></label>
+ </control>
+ <control type="label" id="994">
+ <description>song album</description>
+ <posx>0</posx>
+ <posy>30</posy>
+ <width>620</width>
+ <height>30</height>
+ <align>left</align>
+ <textcolor>white</textcolor>
+ <label></label>
+ </control>
<control type="label" id="992">
<description>textarea</description>
<posx>610</posx>
- <posy>0</posy>
+ <posy>30</posy>
<width>220</width>
<height>30</height>
<align>right</align>
@@ -69,7 +89,7 @@
</control>
<control type="progress" id="991">
<posx>0</posx>
- <posy>20</posy>
+ <posy>60</posy>
<width>620</width>
</control>
</control>
@@ -152,15 +172,24 @@
</control>
</focusedlayout>
</control>
+ <control type="label" id="1009">
+ <description>textarea</description>
+ <posx>20</posx>
+ <posy>400</posy>
+ <width>240</width>
+ <height>220</height>
+ <textcolor>white</textcolor>
+ <aligny>center</aligny>
+ </control>
</control>
<control type="group">
- <posx>120</posx>
- <posy>0</posy>
+ <posx>1000</posx>
+ <posy>25</posy>
<description>player control group</description>
<control type="button" id="666">
- <posx>20</posx>
- <posy>20</posy>
+ <posx>0</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -172,8 +201,8 @@
</control>
<control type="button" id="667">
- <posx>70</posx>
- <posy>20</posy>
+ <posx>50</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -185,8 +214,8 @@
</control>
<control type="button" id="668">
- <posx>120</posx>
- <posy>20</posy>
+ <posx>100</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -197,8 +226,8 @@
<ondown>1000</ondown>
</control>
<control type="button" id="670">
- <posx>120</posx>
- <posy>20</posy>
+ <posx>100</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -210,8 +239,8 @@
</control>
<control type="button" id="669">
- <posx>170</posx>
- <posy>20</posy>
+ <posx>150</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -221,10 +250,18 @@
<onright>702</onright>
<ondown>1000</ondown>
</control>
-
+ <control type="progress" id="671">
+ <posx>0</posx>
+ <posy>50</posy>
+ <width>200</width>
+ </control>
+</control>
+<control type="group">
+ <posx>920</posx>
+ <posy>670</posy>
<control type="button" id="702">
- <posx>250</posx>
- <posy>20</posy>
+ <posx>0</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -236,8 +273,8 @@
</control>
<control type="button" id="703">
- <posx>250</posx>
- <posy>20</posy>
+ <posx>0</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -249,8 +286,8 @@
</control>
<control type="button" id="700">
- <posx>300</posx>
- <posy>20</posy>
+ <posx>50</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -262,8 +299,8 @@
</control>
<control type="button" id="701">
- <posx>300</posx>
- <posy>20</posy>
+ <posx>50</posx>
+ <posy>0</posy>
<width>48</width>
<height>48</height>
<visible>true</visible>
@@ -275,8 +312,8 @@
</control>
<control type="radiobutton" id="704">
- <posx>360</posx>
- <posy>20</posy>
+ <posx>100</posx>
+ <posy>0</posy>
<width>248</width>
<height>48</height>
<visible>true</visible>
@@ -286,10 +323,8 @@
<onleft>700</onleft>
<ondown>1000</ondown>
</control>
-
-
-
</control>
+
<control type="group">
<posx>260</posx>
<posy>0</posy>
@@ -320,8 +355,8 @@
<control type="label" id="100">
<description>textarea</description>
<posx>35</posx>
- <posy>665</posy>
- <width>970</width>
+ <posy>670</posy>
+ <width>620</width>
<height>40</height>
<textcolor>white</textcolor>
<aligny>center</aligny>
@@ -335,34 +370,7 @@
<height>530</height>
<description>playlist group</description>
<visible>Container(1000).HasFocus(1001)</visible>
-
- <control type="button" id="1103">
- <posx>610</posx>
- <posy>-80</posy>
- <width>160</width>
- <height>48</height>
- <align>center</align>
- <visible>true</visible>
- <label>SCRIPT204</label>
- <ondown>1101</ondown>
- <onright>1102</onright>
- <texturenofocus>button-nofocus.png</texturenofocus>
- <texturefocus>button-focus.png</texturefocus>
- </control>
- <control type="button" id="1102">
- <posx>770</posx>
- <posy>-80</posy>
- <width>160</width>
- <height>48</height>
- <align>center</align>
- <visible>true</visible>
- <label>SCRIPT205</label>
- <ondown>1101</ondown>
- <onleft>1103</onleft>
- <texturenofocus>button-nofocus.png</texturenofocus>
- <texturefocus>button-focus.png</texturefocus>
- </control>
-
+
<control type="list" id="1101">
<posx>0</posx>
<posy>0</posy>
@@ -405,7 +413,7 @@
<control type="label">
<posx>40</posx>
<posy>0</posy>
- <width>150</width>
+ <width>200</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -414,9 +422,9 @@
<info>ListItem.Property(artist)</info>
</control>
<control type="label">
- <posx>200</posx>
+ <posx>245</posx>
<posy>0</posy>
- <width>180</width>
+ <width>260</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -425,9 +433,9 @@
<info>ListItem.Property(album)</info>
</control>
<control type="label">
- <posx>395</posx>
+ <posx>510</posx>
<posy>0</posy>
- <width>600</width>
+ <width>440</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -478,7 +486,7 @@
<control type="label">
<posx>40</posx>
<posy>0</posy>
- <width>150</width>
+ <width>200</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -488,9 +496,9 @@
</control>
<control type="label">
- <posx>200</posx>
+ <posx>245</posx>
<posy>0</posy>
- <width>180</width>
+ <width>260</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
@@ -500,9 +508,9 @@
</control>
<control type="label">
- <posx>395</posx>
+ <posx>510</posx>
<posy>0</posy>
- <width>600</width>
+ <width>440</width>
<height>38</height>
<aligny>center</aligny>
<textcolor>white</textcolor>
-----------------------------------------------------------------------
Summary of changes:
script.mpdc/addon.xml | 2 +-
script.mpdc/changelog.txt | 5 +
script.mpdc/default.py | 52 ++--
script.mpdc/resources/language/Czech/strings.xml | 2 +
script.mpdc/resources/language/English/strings.xml | 2 +
script.mpdc/resources/lib/dialog.py | 2 +-
script.mpdc/resources/lib/gui.py | 173 ++++++----
script.mpdc/resources/lib/pmpd.py | 1 +
script.mpdc/resources/settings.xml | 3 +
.../skins/Confluence/720p/mpd-client-main.xml | 358 ++++++++++----------
.../skins/PM3.HD/720p/mpd-client-main.xml | 148 +++++----
.../skins/transparency/720p/mpd-client-main.xml | 146 +++++----
12 files changed, 487 insertions(+), 407 deletions(-)
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons