exporting/importing config keys? plus: Mandelbrot news
Benoit Jacob
jacob.benoit.1 at gmail.com
Sat Mar 13 20:49:26 CET 2010
ok, finally a hopefully not too stupid question.
Here's my code:
void Mandelbrot::exportConfig()
{
KUrl url = KFileDialog::getSaveUrl(
KUrl(),
"*.txt|Text files",
0,
i18n("Save File"),
KFileDialog::ConfirmOverwrite
);
KConfig config(url.fileName());
KConfigGroup configgroup(&config, "Mandelbrot");
save(configgroup);
configgroup.config()->sync();
}
Problem: it doesn't actually write the file. Why?
(The file dialog runs well, but the file isn't actually getting
created, and if i create it beforehand, it doesn't get written).
I had tried following this:
http://techbase.kde.org/index.php?title=Development/Tutorials/KConfig#Writing_Entries
Benoit
2010/3/13 Benoit Jacob <jacob.benoit.1 at gmail.com>:
> 2010/3/13 Benoit Jacob <jacob.benoit.1 at gmail.com>:
>> 2010/3/13 Benoit Jacob <jacob.benoit.1 at gmail.com>:
>>> 2010/3/13 Benoit Jacob <jacob.benoit.1 at gmail.com>:
>>>> 2010/3/13 Marco Martin <notmart at gmail.com>:
>>>>> On Saturday 13 March 2010, Benoit Jacob wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I've just made a bunch of Mandelbrot improvements in trunk, plus 1
>>>>>> bugfix backported to 4.4, see below.
>>>>>
>>>>> great :)
>>>>>
>>>>>> I would like to honor this feature request:
>>>>>> http://forum.kde.org/brainstorm.php#idea55395_page1
>>>>>>
>>>>>> Basically I want to create a right-click desktop menu entry that
>>>>>> allows to export/import Mandelbrot's configuration to/from a file.
>>>>>>
>>>>>> Does KDE's config system allow that right away? Or should I code my
>>>>>> own file I/O?
>>>>>>
>>>>> create a new kconfig on a new file, a kconfiggroup on it, then write all your
>>>>> config entries copied from the main kconfiggroup
>>>>>
>>>>>> Also, any example code for adding a right-click menu to a plasma wallpaper?
>>>>> QList<QAction*> Wallpaper::contextualActions()
>>>>
>>>> I tried that but can't get it to work: it compiles, but the actions
>>>> don't show up in the right click menu.
>>>>
>>>> Here's what I did. In my Mandelbrot (inheriting Wallpaper) class I
>>>> have new members,
>>>>
>>>> QAction m_exportImageAction;
>>>> QAction m_exportConfigAction;
>>>> QAction m_importConfigAction;
>>>>
>>>> Then they are initialized in the initialization list of my Mandelbrot
>>>> constructor:
>>>>
>>>> Mandelbrot::Mandelbrot(QObject *parent, const QVariantList &args)
>>>> : Plasma::Wallpaper(parent, args), m_image(0), m_tiling(this),
>>>> m_exportImageAction(i18n("Export image..."), 0),
>>>> m_exportConfigAction(i18n("Export parameters..."), 0),
>>>> m_importConfigAction(i18n("Import parameters..."), 0),
>>>
>>> I also tried passing 'this' instead of '0' for the 'parent' argument
>>> here, no difference...
>>>
>>>>
>>>> Then, in the body of that constructor, I do:
>>>>
>>>> contextualActions().append(&m_exportImageAction);
>>>> contextualActions().append(&m_exportConfigAction);
>>>> contextualActions().append(&m_importConfigAction);
>>>>
>>>> connect(&m_exportImageAction, SIGNAL(triggered()), this,
>>>> SLOT(exportImage()));
>>>> connect(&m_exportConfigAction, SIGNAL(triggered()), this,
>>>> SLOT(exportConfig()));
>>>> connect(&m_importConfigAction, SIGNAL(triggered()), this,
>>>> SLOT(importConfig()));
>>>>
>>>> What am I doing wrong?
>>
>> Found it --- contextualActions(), despite _not_ being const-qualified,
>> is returning a list _by value_. Since I didn't see a const-qualifier,
>> my brain just assumed it would return a reference.
>
> Oops.
>
> It _is_ const qualified :)
>
> Sorry, I'm really tired !!
>
> Benoit
>
>>
>> Looks like I have to use setContextualActions.
>>
>> Benoit
>>
>>>>
>>>> Thanks
>>>> Benoit
>>>>
>>>>>
>>>>> (wouldn't make more sense putting it into the config dialog anyways?)
>>>>>
>>>>> Cheers,
>>>>> Marco Martin
>>>>> _______________________________________________
>>>>> Plasma-devel mailing list
>>>>> Plasma-devel at kde.org
>>>>> https://mail.kde.org/mailman/listinfo/plasma-devel
>>>>>
>>>>
>>>
>>
>
More information about the Plasma-devel
mailing list