From kde-core-devel Mon Nov 19 12:46:47 2007 From: Andreas Pakulat Date: Mon, 19 Nov 2007 12:46:47 +0000 To: kde-core-devel Subject: Re: KConfig::addConfigSources is broken Message-Id: <20071119124647.GA25969 () morpheus ! apaku ! dnsalias ! org> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=119547654519737 On 19.11.07 13:33:54, Andreas Pakulat wrote: > On 19.11.07 11:58:52, Andreas Pakulat wrote: > > On 18.11.07 22:52:05, Thomas Braxton wrote: > > > On 11/18/07, Andreas Pakulat wrote: > > > > Yeah, actually I don't care which file I have to use in the openConfig() > > > > and which file to use in the addConfigSources as long as the symmetry is > > > > kept. > > > > > > I tested this, and the symmetry is still there. Try my previous > > > suggestion and if it still doesn't work, then we have a bug, which > > > I'll gladly fix. I don't see how opening one file, then expecting > > > writes to go to a different file is symmetrical, or sensible. But, if > > > that's the way you want it I can easily change it. > > > > Sorry for not testing it earlier, so I did that switch now and have: > > > > d->m_cfg = KSharedConfig::openConfig( d->developerTempFile ); > > d->m_cfg->addConfigSources( QStringList() << d->projectTempFile ); > > > > KConfigGroup projectGroup( d->m_cfg, "Project" ); > > > > QString managerSetting = projectGroup.readEntry( "Manager", "KDevGenericManager" ); > > > > And projectTempFile contains the Project group with an entry for > > "Manager" thats not "KDevGenericManager" > > > > When I now start KDevelop and let it load the project, I get a happily > > cycling KDevelop at 90% CPU, because its using the KDevGenericManager > > and not the Manager plugin that is stated in the projectTempFile. > > I did some testing with a simple App (generated from kapptemplate) and I > think these are the problems when using the way Thomas suggested: > > - readEntry only reads from the file that the config was created (i.e. > the one given to openConfig. > Reading an entry that is in both files returns the value from the file > that the config was created with, reading an entry that only exists in > the file that was added, results in getting the default value given to > readEntry() > > - writing out a new group doesn't work at all, using > KConfigGroup newgrp( cfg, "NewGroup" ); > grp.writeEntry( "NewEntry", "NewValue"); > grp.sync(); > cfg->sync(); > > doesn't create a new group in the file that the config was opened > with. > > The code I added to the app (in the KMainWindow subclass constructor) > is: Bah, I shouldn't code when I'm in a hurry. Of course the second point is due to a coding error on my side. So only reading from a config object is a problem. Andreas -- You will be singled out for promotion in your work.