Hello, I have a problem with KConfigSkeleton not writing its configuration to disk when calling KCoreConfigSkeleton::writeConfig(). The odd thing about this is that it works when being used together with KConfigDialog and KConfigDialogManager, in which case the configuration file is written correctly.
I have attached a small sample illustrating this behavior. When run, the value that is entered in the configuration widget will be written to disk. However, the value that is specified in MyConfigMain.queryClose() is not written. Is this a bug in PyKDE or am I missing something? Thanks, Till
import sys
from PyKDE4.kdecore import *
from PyKDE4.kdeui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
#
# Configuration storage
#
class MyConfig(KConfigSkeleton):
_simpleThing = QString()
_simpleThingDlg = QString()
__instance = None
def __init__(self):
if self.__instance:
raise self.__instance
self.__instance = self
KConfigSkeleton.__init__(self, "configtestrc")
self.createConfig()
self.readConfig()
def createConfig(self):
# Create entries for the main window
self.addItemString ("simpleThing", self._simpleThing, QString("foo"))
self.addItemString ("simpleThingDlg", self._simpleThingDlg, QString("bar"))
def simpleThing(self):
return self._simpleThing
def setSimpleThing(self, simpleThing):
self._simpleThing = simpleThing
def simpleThingDlg(self):
return self._simpleThingDlg
def setSimpleThingDlg(self, simpleThingDlg):
self._simpleThingDlg = simpleThingDlg
#
# Configuration dialog
#
class MyConfigDialog(KConfigDialog):
def __init__(self, parentWidget, configuration):
KConfigDialog.__init__(self, parentWidget, "MainSettings", configuration )
self.setFaceType ( KPageDialog.Plain )
self.configWidget = QWidget()
uic.loadUi ( "mycfg.ui", self.configWidget )
self.addPage ( self.configWidget, "Configuration" )
#
# Main application class
#
class MyConfigMain(KMainWindow):
def __init__(self):
KMainWindow.__init__(self)
# Create configuration
self.config = MyConfig()
#
# BUG?: A value that is accessed from the dialog below is written to the file when changed (desired behavior)
#
self.cfgDialog = MyConfigDialog(self, self.config)
self.cfgDialogManager = KConfigDialogManager(self.cfgDialog, self.config)
self.cfgDialog.show()
# not necessary, nothing here - but do something
self.show()
def queryClose(self):
#
# BUG?: This should cause the text to be written to the configuration file, but it does not appear (not desired)
#
self.config.setSimpleThingDlg("foobar!")
self.config.writeConfig()
return True
#
# Startup Code
#
# Create main window and application info,
# then instantiate main class and jump there
#
appName = "configtest"
catalog = ""
programName = ki18n("Configuration Test")
version = "0.1"
description = ki18n("Configuration Test")
license = KAboutData.License_GPL
copyright = ki18n("(c) 2009 Till Gerken, <[email protected]>")
text = ki18n("none")
homePage = ""
bugEmail = "[email protected]"
aboutData = KAboutData ( appName, catalog, programName, version, description, license, copyright, text, homePage, bugEmail )
KCmdLineArgs.init ( sys.argv, aboutData )
app = KApplication()
docmgr = MyConfigMain()
sys.exit(app.exec_())
mycfg.ui
Description: application/designer
_______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
