DevHeads.net

Review Request: GSoC: Errors handling during file transfer.

Review request for kdelibs.

Summary
Modeless dialog to handle interactions and modifications in CopyJob.

Diffs
kio/CMakeLists.txt b517621
kio/kio/copyjob.h eb88c7a
kio/kio/copyjob.cpp eff7825
kio/kio/interactiondialog/abstractinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialog.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.h PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.cpp PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.h PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.cpp PRE-CREATION
kio/kio/jobuidelegate.h 25e0728
kio/kio/jobuidelegate.cpp 85679c2

Diff: <a href="http://git.reviewboard.kde.org/r/102388/diff" title="http://git.reviewboard.kde.org/r/102388/diff">http://git.reviewboard.kde.org/r/102388/diff</a>

Testing

Thanks,

Cyril

Comments

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/21/2011 - 10:21

(Updated Aug. 21, 2011, 3:21 p.m.)

Review request for kdelibs and David Faure.

Summary
Modeless dialog to handle interactions and modifications in CopyJob.

Diffs
kio/CMakeLists.txt b517621
kio/kio/copyjob.h eb88c7a
kio/kio/copyjob.cpp eff7825
kio/kio/interactiondialog/abstractinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialog.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.h PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.cpp PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.h PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.cpp PRE-CREATION
kio/kio/jobuidelegate.h 25e0728
kio/kio/jobuidelegate.cpp 85679c2

Diff: <a href="http://git.reviewboard.kde.org/r/102388/diff" title="http://git.reviewboard.kde.org/r/102388/diff">http://git.reviewboard.kde.org/r/102388/diff</a>

Testing

Thanks,

Cyril

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/22/2011 - 08:17

(Updated Aug. 22, 2011, 1:17 p.m.)

Review request for kdelibs and David Faure.

Changes
Two little fixes:
1) string represenation of file permissions in ExistingInteractionItem
2) correct representation of date UnreadableInteractionItem

Summary
Modeless dialog to handle interactions and modifications in CopyJob.

Diffs (updated)
kio/CMakeLists.txt b517621
kio/kio/copyjob.h eb88c7a
kio/kio/copyjob.cpp eff7825
kio/kio/interactiondialog/abstractinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialog.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.h PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.cpp PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.h PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.cpp PRE-CREATION
kio/kio/jobuidelegate.h 25e0728
kio/kio/jobuidelegate.cpp 85679c2

Diff: <a href="http://git.reviewboard.kde.org/r/102388/diff" title="http://git.reviewboard.kde.org/r/102388/diff">http://git.reviewboard.kde.org/r/102388/diff</a>

Testing

Thanks,

Cyril

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/22/2011 - 18:12

(Updated Aug. 22, 2011, 11:12 p.m.)

Review request for kdelibs and David Faure.

Summary
Modeless dialog to handle interactions and modifications in CopyJob.

Diffs (updated)
kio/CMakeLists.txt b517621
kio/kio/copyjob.h eb88c7a
kio/kio/copyjob.cpp eff7825
kio/kio/interactiondialog/abstractinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/allinteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab_p.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel_p.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel_p.h PRE-CREATION
kio/kio/jobuidelegate.h 25e0728
kio/kio/jobuidelegate.cpp 85679c2

Diff: <a href="http://git.reviewboard.kde.org/r/102388/diff" title="http://git.reviewboard.kde.org/r/102388/diff">http://git.reviewboard.kde.org/r/102388/diff</a>

Testing

Thanks,

Cyril

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/24/2011 - 11:25

(Updated Aug. 24, 2011, 4:25 p.m.)

Review request for kdelibs and David Faure.

Changes
Little fixes.

Summary
Modeless dialog to handle interactions and modifications in CopyJob.

Diffs (updated)
kio/CMakeLists.txt b517621
kio/kio/copyjob.h eb88c7a
kio/kio/copyjob.cpp eff7825
kio/kio/interactiondialog/.interactiondialog.cpp.kate-swp PRE-CREATION
kio/kio/interactiondialog/abstractinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/allinteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab_p.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel_p.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel_p.h PRE-CREATION
kio/kio/jobuidelegate.h 25e0728
kio/kio/jobuidelegate.cpp 85679c2

Diff: <a href="http://git.reviewboard.kde.org/r/102388/diff" title="http://git.reviewboard.kde.org/r/102388/diff">http://git.reviewboard.kde.org/r/102388/diff</a>

Testing

Thanks,

Cyril

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/24/2011 - 11:29

(Updated Aug. 24, 2011, 4:29 p.m.)

Review request for kdelibs and David Faure.

Changes
Uhh.. I accidentally added a temporary file.

Summary
Modeless dialog to handle interactions and modifications in CopyJob.

Diffs (updated)
kio/CMakeLists.txt b517621
kio/kio/copyjob.h eb88c7a
kio/kio/copyjob.cpp eff7825
kio/kio/interactiondialog/abstractinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/abstractinteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/allinteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/allinteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/existinginteractionmodel_p.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.h PRE-CREATION
kio/kio/interactiondialog/interactiondialog.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab.cpp PRE-CREATION
kio/kio/interactiondialog/interactiondialogtab_p.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.h PRE-CREATION
kio/kio/interactiondialog/renameinteractionwidget.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel.cpp PRE-CREATION
kio/kio/interactiondialog/requestitemmodel_p.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionitem_p.h PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel.cpp PRE-CREATION
kio/kio/interactiondialog/unreadableinteractionmodel_p.h PRE-CREATION
kio/kio/jobuidelegate.h 25e0728
kio/kio/jobuidelegate.cpp 85679c2

Diff: <a href="http://git.reviewboard.kde.org/r/102388/diff" title="http://git.reviewboard.kde.org/r/102388/diff">http://git.reviewboard.kde.org/r/102388/diff</a>

Testing

Thanks,

Cyril

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 11/17/2011 - 09:33

- David Faure

On Aug. 24, 2011, 4:29 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 12/08/2011 - 13:56

Just switch your kdelibs to the "frameworks" branch, but then you can't compile anything else from kde on top of it :-)

You need to get the very very latest version of cmake (probably from a source tarball, or from git), then compile the kde git module "extra-cmake-modules", and then the frameworks branch of kdelibs.
Install all that into a custom prefix. Use the example programs in kdelibs to test the code, or just compile kde-copy alone against kdelibs-frameworks.

Qt 5 not needed, we're still using Qt 4 for now.

- David

On Aug. 24, 2011, 4:29 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 11/17/2011 - 10:53

Hi David.

I'm currently working on this dialog together with Björn Balazs. Now we a mostly concentrated on the usability. And it looks like the dialog will be completely different from what we have in this patch.

Anyway, CopyJob related code will mostly stay the same. Can you provide a guide for building/compiling/installing KDE Frameworks?

- Cyril

On Aug. 24, 2011, 4:29 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 11/17/2011 - 09:37

Cyril, can you rebase your changes on top of the kdelibs frameworks branch, compile, and commit there?

- David

On Aug. 24, 2011, 4:29 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By Christoph Feck at 09/21/2011 - 08:46

I did not review the code, so I cannot comment on it. What I am concerned about is how/when this code should be committed. I certainly believe this is 4.8 material, so it should not be committed to kdelibs/4.7, on the other hand, we have no master repo now, so developers/distributions wanting to test this would have to apply it manually, which is unfortunate for such a big feature.

- Christoph

On Aug. 24, 2011, 4:29 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 08/23/2011 - 09:15

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5253>

Remove, unused now.

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5254>

Maybe the property name should be less generic, to avoid possible clashes (e.g. with Qt or KJob future changes).
I would suggest "interactionId" (make sure to change it everywhere ... which is a good reason for using a
static const char s_interactionIdProperty[] = "interactionId";
)

- David

On Aug. 22, 2011, 11:12 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 08/22/2011 - 11:06

Nice job. Please find my comments below.

kio/kio/copyjob.h
<http://git.reviewboard.kde.org/r/102388/#comment5199>

... yes? :)
(end of sentence missing)

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5202>

Store the UDSEntry here, instead?

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5201>

deleted where?

Also: The dialog should only be created if we're in "interactive" mode. The problem is, the way to disable interactive mode is job->setUiDelegate(0) after all this code has run.

So I think the creation of the interaction dialog should be done on demand, when the first thing happens that might need it. At that point, we'll know if the job is interactive (has a ui delegate) or not (no ui delegate -> no way to handle the error, so abort the job, like the code already does in non-interactive mode)

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5203>

No C-style casts please. Use static_cast<time_t>(foo) or constructor-syntax like time_t(foo).

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5204>

An alternative to the signal mapper would be to just set the interactionId into the job, using a dynamic property (QObject::setProperty). That would be simpler, no? (maybe I'm missing something)

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5206>

It might be more readable to ensure that this case is the last one in the method, since it will be executed last, chronologically.

kio/kio/copyjob.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5205>

And what happens if this if() is false, too? Ah then the job is waiting for the dialog?

kio/kio/interactiondialog/abstractinteractionitem.h
<http://git.reviewboard.kde.org/r/102388/#comment5208>

It would be good to name _p.h all private headers in libraries (we don't do this everywhere, but at least we're moving into that direction).

kio/kio/interactiondialog/allinteractionitem.h
<http://git.reviewboard.kde.org/r/102388/#comment5209>

You can't use i18n in a header file, nor in a static object. Instead, fill the list on demand when needed for the first time (if empty then append...).
It's either that or I18N_NOOP, but in this case I think on demand is simpler.

No static objects in libraries, too, so this should be a function-static (e.g. make a file-static function that has the function-static object, fills it on demand, and returns it).

kio/kio/interactiondialog/existinginteractionitem.h
<http://git.reviewboard.kde.org/r/102388/#comment5211>

This method should made non-inline (to remove the number of unnecessary #includes in this header file, too)

kio/kio/interactiondialog/existinginteractionitem.h
<http://git.reviewboard.kde.org/r/102388/#comment5210>

Same as above.

kio/kio/interactiondialog/existinginteractionmodel.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5212>

No parent object?

(No layout, either?)

I suppose this is done later on, but this makes the code surprising to read.

kio/kio/interactiondialog/interactiondialog.h
<http://git.reviewboard.kde.org/r/102388/#comment5213>

Typo (in all the signals) Emmited -> Emitted.

kio/kio/interactiondialog/interactiondialog.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5215>

Seems to be a child of this, so I recommend passing "this" as parent widget argument. (I know, the Qt examples don't do that, but there are plenty of good reasons for doing it).

kio/kio/interactiondialog/interactiondialogtab.cpp
<http://git.reviewboard.kde.org/r/102388/#comment5214>

This looks convoluted.

In fact I'm not sure what this code does; it de-layouts without deleting the widgets? Then it would be simpler to just delete (and recreate) m_buttonsLayout, no?

kio/kio/jobuidelegate.h
<http://git.reviewboard.kde.org/r/102388/#comment5207>

This is a BIC change (new virtual method in a public class). However, this patch is for kdelibs-frameworks (future 5.0), so in fact it's the right timing for making such a change. So, no objection, I just wanted to point this out for clarity :)

- David

On Aug. 22, 2011, 1:17 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/24/2011 - 11:24

done

No, I didn't use tests. Are there any docs about kdelibs testing?

- Cyril

On Aug. 22, 2011, 11:12 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 08/25/2011 - 07:00

On Wednesday 24 August 2011 16:24:05 Cyril Oblikov wrote:
Two solutions:

* to compile and run a single test, just cd into kdelibs/kio/tests; make
jobtest ; ./jobtest

* to always compile all unit tests (recommended, but takes a bit more time
during compilation)
pass -DKDE4_BUILD_TESTS=TRUE to cmake.
To run all these tests, "make test".

Re: Review Request: GSoC: Errors handling during file transfer.

By David Faure at 08/23/2011 - 09:15

OK, old code shows bad example :-)
Leave it as is for now, and fix them all in a separate commit later.

File-static is a C-style function in a .cpp file. Marked "static" so that it's only visible inside the .cpp file.

A function-static object is "static Foo bar;" inside of a function/method. "Safe" because it's only created when entering the function/method for the first time.

In clear:

static QStringList allInteractionItemHeaders() {
static QStringList s_headers;
if (s_headers.isEmpty()) {
s_headers << i18n("...") << ...;
}
return s_headers;
}

In a CPP file, not in a header file :)

Well, a simple loop could be used to hide all buttons, but OK. I drop the charges :)

Actually it could be useful. E.g. for unittests, which could test that the interactiondialog is called, without actually showing a dialog.

If you had more time for your SOC I would strongly recommend to add unit tests as the next step, BTW...

But did you at least run jobtest (in kdelibs/kio/tests) to make sure that the new code doesn't break it? E.g. the creation of a dialog for sure broke it, but now you've fixed that bit.

- David

On Aug. 22, 2011, 11:12 p.m., Cyril Oblikov wrote:

Re: Review Request: GSoC: Errors handling during file transfer.

By Cyril Oblikov at 08/22/2011 - 18:07

fixed

It is no longer needed at all.

fixed

But it is very common in copyjob.cpp:
`grep "(time_t)" copyjob.cpp | wc -l` says 17.
Should I replace them all?

fixed

fixed

Yes. I've changed the order of ifs and added additional commets. I hope it is clear now.

fixed

fixed

fixed

fixed

fixed

This is an example from qt doc. It removes all items from a layout. Anyway we need to iterate over all layout items, because it is required to hide old buttons. So I guess deleting and recreating layout would not reduce the code.

I'm not sure this method should be virtual.

Hmm... what is file-static and function-static?

- Cyril

On Aug. 22, 2011, 1:17 p.m., Cyril Oblikov wrote: