Comment # 11 on bug 922023 from
Result of a quick video conference between mvidner, jreidinger, shundhammer:

The goal of this would be to use part of the UI to do a sanity check on terms
passed to the UI for building a dialog etc. so it could complain about syntax
errors.

There is the "dummy UI" that can be used to completely bypass all UI calls, but
this is insufficient for those purposes: It simply always returns 'nil' for
every call.

What is required here is actually using the calls from YCPDialogParser.cc in
yast-ycp-ui-bindings so they can check the arguments passed to UI::OpenDialog()
and related calls. With the current architecture, however, this requires having
a real UI with real concrete widgets (as opposed to abstract widgets on the
libyui level) and a real widget factory that instantiates them: The
YCPDialogParser is a "recursive descent" parser with code generation in each
node of the parsing tree. It calls the respective YWidgetFactory methods for
creating a VBox, a HBox, a PushButton as each of those terms is evaluated in
the UI dialog description term.

As of now, there is no simple way to mock all this since each factory method is
required to return the correct pointer type (e.g., a YPushButton * for a
PushButton etc.). It's not as simple as having two or three simple widget types
that could be used at will; many widgets have pure virtual methods that need to
be implemented correctly. Some of them are called in the YCPDialogParser
already.

This makes it not trivial to create a special TestUI that does little more than
allow this kind of parsing and checking without actually creating UI elements:
Each of the widget classes described in libyui/YWidgetFactory would have to be
implemented at least in principle with implementations for the required pure
virtual methods.

This can be done, and it's not exactly rocket science, but it is substantial
work. And the result would have to be maintained along with the other UIs, of
course.


You are receiving this mail because: