XBMC Community Forum
HOW-TO write GUI settings for XBMC python plugins and scripts (addons) - Printable Version

+- XBMC Community Forum (http://forum.xbmc.org)
+-- Forum: Development (/forumdisplay.php?fid=32)
+--- Forum: Python Add-on Development (/forumdisplay.php?fid=26)
+--- Thread: HOW-TO write GUI settings for XBMC python plugins and scripts (addons) (/showthread.php?tid=29577)

Pages: 1 2 3 4 5 6 7 8 9 10


HOW-TO write GUI settings for XBMC python plugins and scripts (addons) - yuvalt - 2007-11-07 23:19

If you have written a plugin/script and you want to have GUI settings attached to it (by right-clicking on it and selecting "Plugin Settings/Script Settings"), do the following:

1. Under your plugin/script dir create a "resources" dir.

2. Create the file resources/settings.xml. An example of how such a file would look like for a Flickr plugin:

Code:
<settings>
   <setting id="api_key" type="text" label="30000" default="123456789ABCDEF"/>
   <setting id="shared_secret" type="text" label="30001" default="123456789"/>
   <setting id="privacy" type="bool" label="30002" default="true"/>
   <setting id="perpage" type="enum" label="30003" values="5|10|15|20|25|30" def
ault="3"/>
   <setting id="full_details" type="bool" label="30004" default="false"/>
</settings>

3. As you can see the labels use a resource file. To create one for english (for example), create the file: resources/language/english/strings.xml. For example:

Code:
<strings>
    <string id="30000">Flickr API Key</string>
    <string id="30001">Shared Secret</string>
    <string id="30002">Include Adult Content</string>
    <string id="30003">Number of Pictures per Page</string>
    <string id="30004">Include More Details</string>
</strings>

4. The user edited plugin/script settings are stored at special://profile/ settings.xml. For example:
Code:
<settings>
    <setting id="api_key" value="123456789ABCDEF" />
    <setting id="shared_secret" value="123456789" />
    <setting id="privacy" value="false" />
    <setting id="perpage" value="3" />
    <setting id="full_details" value="true" />
</settings>

5a. To get the settings values in the plugin do xbmcplugin.getSetting(id). For example:
theKey = xbmcplugin.getSetting("api_key")
5a. To get the settings values in the script do xbmc.getSetting(id). For example:
theKey = xbmc.getSetting("api_key")

check the pydocs.

Good luck!


- asg - 2007-11-08 00:14

Thanks! This is a really neat "new?" feature ..
but did you missed a svn commit or something? Theres no 'getSetting' in xbmcplugin yet Smile

Quote:'module' object has no attribute 'getSetting'
Regards
asg


- yuvalt - 2007-11-08 00:49

Did you try it with the linuxport?


- asg - 2007-11-08 00:55

No..tried with "normal" rev10688. Ive also checked out the linuxport, but i cant find any reference to getSettings in xbmcplugin.

asg


- Nuka1195 - 2007-11-08 01:35

I think we need more than luck Smile


- yuvalt - 2007-11-08 01:37

:-) You're right, my commit failed earlier and I did not notice. Please try again..


- Nuka1195 - 2007-11-08 02:34

they work great.

one thing that should be mentioned is to get your bool or integer, do the following:

Code:
bool
self.settings.privacy = xbmcplugin.getSetting( "privacy" ) == "true"

integer
self.settings.perpage = int( xbmcplugin.getSetting( "perpage" ) )

Now to backport it for the masses Smile

Edit: just wanted to say good job, this is really a nice feature.


Online Manual Documentation - Gamester17 - 2007-11-08 14:28

WIKI updated? ...does the wiki even have a plugin/plugins section or article already? Confused


- Unbehagen - 2007-11-08 16:24

Thanks! This is awesome!


- Nuka1195 - 2007-11-08 22:32

Ok, plugins settings has been backported to the main trunk, thanks yuvalt.