Add possibility to use mWidgets (and possible other backends?) to pass part of output document tree or input document tree to independent tool, parse resulting xml and process it in place of tree passed to this external tool.
We must add new list to obinded, contains type of element (input tree/output tree), pointer to element and program file descriptor. We also could connect callbacks to events of file descriptor for receiving data by app owning window, which elements are processed by external tool. When data are received, we will process element again. We must also add flag to intree/outtree telling, that this element (and each of it's child also) are delegated to external tool. When we process element and found this flag set, we stop normal processing and pass element with each child to external tool. Passing means generate xml and pass it as string (thought about passing in other form - binary?).
This will allow to do a lot of stuff, like filtering, sorting, showing window with processed items (for example only names), calculating (for example items count), etc. Many thinks currently possible in text shell (like bash) could be possible.
Interaction:
Program, which interacts with our libgreattao app, could show one's window with result or replace processed tree. In future, when socket support will be restored and placement-hint in xml or API will be possible, many thinks to integrate with window will be possible - for example add new button in part of window not selected by user - like action button could be placed in actions place, not on place, where replaced elements was place.
I think, we could change some steps:
For example - sort:
For example - pagination
Remember: we must add UI to shown selected elements epath and attributes (name/description). User may select, which path element may distinguish elements and can select, which element (or path) will be traded as input.