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