Hello list,

I have a question about a plasmoid written in Python. I's quite a basic 
question and surely very simple to solve, but I didn't find a tutorial how to 
do it and I also could not get it out of other Python plasmoids.

How can I save and restore the configuration of a Python plasmoid? I'm pretty 
sure there's a nice high-level KDE/Qt way to do it, isn't it? I managed to 
write a plasmoid with a config dialog. I also managed to access the selected 
config values, but I don't know how to save the config and restore it later.

I would really appreciate help about this. It surely would also be fine if 
some example was included in the Howto found at 
http://techbase.kde.org/Development/Tutorials/Plasma#Python as probably other 
people trying to write a Python plasmoid will also run into this.

Thanks in advance for all help!

Here's a minimal example able to access the selected value from the config 
dialog but lacking the ability so save it that can be run via plasma-windowed:

metadata.desktop:

        [Desktop Entry]
        Encoding=UTF-8
        Name=Config Test
        Type=Service
        ServiceTypes=Plasma/Applet
        X-Plasma-API=python
        X-Plasma-MainScript=code/main.py

contents/code/main.py:

        # -*- coding: utf-8 -*-
        
        from PyQt4 import QtCore
        from PyKDE4.plasma import Plasma
        from PyKDE4 import plasmascript
        
        class configTest(plasmascript.Applet):
        
                def __init__(self, parent, args = None):
                        plasmascript.Applet.__init__(self, parent)
        
                def init(self):
                        self.setAspectRatioMode(Plasma.IgnoreAspectRatio)
        
                def paintInterface(self, painter, option, rect):
                        painter.save()
                        painter.setPen(QtCore.Qt.black)
                        painter.drawText(rect, QtCore.Qt.AlignLeft, 
str(self.config('main').readEntry('testEntry')))
                        painter.restore()
        
        def CreateApplet(parent):
                return configTest(parent)

contents/ui/config.ui:

        <?xml version="1.0" encoding="UTF-8"?> 
        <ui version="4.0"> 
         <class>Config</class> 
          <widget class="QWidget" name="verticalLayoutWidget"> 
           <layout class="QVBoxLayout" name="verticalLayout"> 
            <item> 
             <widget class="KUrlRequester" name="kcfg_testEntry"/> 
            </item> 
           </layout> 
          </widget> 
         <resources/> 
         <connections/> 
        </ui>

contents/config/main.xml:

        <?xml version="1.0" encoding="UTF-8"?>
        <kcfg xmlns="http://www.kde.org/standards/kcfg/1.0";
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
              xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
                                  
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd";>
          <kcfgfile name="configTestrc"/>
          <include>kglobalsettings.h</include>
          <group name="main">
            <entry name="testEntry" type="Url"></entry>
          </group>
        </kcfg>

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to