User:Alsroot/trash/Frame Panels: Difference between revisions

Line 24: Line 24:
== Detailed Description ==
== Detailed Description ==


Purposes to have special Journal plugins API instead of regular activities:
The reason to this feature is having Journal views for different purposes i.e. Journal plugin could be very common/simple but views for Books/Video/etc could have some special UI features. Another benefit of Journal plugins is that we can have non-core plugins and distribute them from ASLO.
 
Purposes to have special Journal plugins API in addition to activities API:
* security reasons, browsing Journal entries and launch/remove/change objects could be denied for regular activities in next sugar releases
* security reasons, browsing Journal entries and launch/remove/change objects could be denied for regular activities in next sugar releases
* Journal integration
* Journal integration
** fast access to plugin views
** ObjectChooser integration


==== UI modes ====
Plugins API will provide necessary functionality:
 
Unified Browser supports plugins for different UI modes:
* Journal objects-centric plugin
* Books plugin, Calibre-like(or so) for browsing books
* Audio plugin for browsing audio files
* Video plugin for browsing video files
* Plugin to browse .xol collections(instead of using sidebar in Browse)
* ..
 
So, we could have plugins for different purposes i.e. Journal plugin could be very common/simple but something like plugin for Books/Video/etc can have some special UI features (that look redundant in Journal plugin).
 
For sugar-0.88+, Journal will load all installed plugins and provide possibility to switch between them, for <0.88 plugins will be formed in separated activities.
 
For sugar-0.88+, Journal plugin will be packaged with sugar, other plugins could be packaged into activities and have separate code base. In 0.88+ environment, these activities will use plugins engine from current sugar, for <0.88 environments (and for 0.88+ glucose releases when plugin uses newer engine), plugins engine will be packaged into activity bundles.
 
'''NOTE''' Separate plugins/activities is not a task for this feature proposal.
 
==== Plugins engine ====
 
Browser provides backwards compatible and versioned plugins engine API:
* ''v0'' engine for glucose-0.84/0.86
* ''v1'' engine for glucose-0.88(+)
 
Engine provides all necessary functionality for plugins:
* TreeViewModel as a source of objects; so, all pulugins should use TreeViewModel for list widgets
* TreeViewModel as a source of objects; so, all pulugins should use TreeViewModel for list widgets
** for local objects (rich client for <0.88 and thin client for >=0.88)
** for remote p2p objects
** for remote server objects
** aggregated sources (combine several sources)
* UI widgets, like TreeView, TableView, tag clouds etc.
* UI widgets, like TreeView, TableView, tag clouds etc.
* shell related procedures(like activate objects)
* shell related procedures(like activate objects)