Rapicorn Task List

From Testbit Wiki
Jump to: navigation, search

For newer information, see: Rapicorn Roadmap

Task List

The Rapicorn task list gives a high level overview of features that are still unimplemented. Feedback and discussions are welcome on the Rapicorn Mailing list.

Feature Notes
Simple API
  • Implemented
  • Simplify Python API, minimize API calls to get UI up
  • Simplify C++ API to be as simple as Python, except for decorators
Level 3 Selectors
Resource References
  • Implemented
  • Support resource IDs: @string/...
  • Android resource specification
  • The rapidres(1) utility now replaces zintern (former internal tool) and automatically compiles the res/ build directory
9-Patch Rendering
  • Implemented
  • Add widget with 9-Patch (SVG) element rendering [1]
  • Add container for child allocation with the child size specified by a 9-Patch fill area
  • Revamp widget states to allow state coverage with SVG elements
SVG Widgets
  • Implemented
  • Support SVG warping and stretching similar to 9-patch images
  • Support child size allocation based on SVG images
Image Loaders
  • Implemented (PNG, SVG)
  • Add PNG loader & rendering
  • Add SVG loader & rendering
Cairo Rendering
  • Implemented
  • Port all rendering primitives to use Cairo API
  • Use Cairo surfaces as widget rendering buffer internally
Keyboard Input
  • Implemented (FocusFrame)
  • Add support for X11 XIM input methods and compose key
  • Generate UTF-8 text input from X11 keyboard input
  • Add widget focus, move on LEFT/RIGHT/UP/DOWN/PREV/NEXT
Data Widgets
  • Implemented
  • Implement WidgetList, Label, Text::Editor
Control Containers
  • Implemented
  • Implement Button types, FocusFrame, Slider
Layout Containers
  • Implemented
  • Implement Alignment, HBox, VBox, Table, Arrangement, ScrollArea, Window
Paint Widgets
  • Implemented
  • Implement Arrow, Image, Ambience, Frame, DotGrid, Drawable
Widget Groups
  • Implemented
  • Support SizeGroup specification in XML declarations (Widget::hsize_group, Widget::vsize_group)
  • Generalize SizeGroup to WidgetGroup to allow arbitrary grouping of widgets
Arbitrary Size Negotiation
  • Implemented (Negotiation)
  • Support widgets tuning (changing) size requisition in response to certain size allocations.
  • Support widget sizes below optimum requisition size for all widgets.
Widget Spreading
  • Implemented (Spreading)
  • Propagate SPEAD flags up the hierarchy as if the corresponding EXPAND flag is set on all ancestors.
Micro Widget Composition
  • Implemented ([file:///opt/share/doc/rapicorn1307/html/factory_8hh.html factory.hh], Micro, Composites)
  • Export Widget types to factory
  • Generate widget hierarchies via factory from concise XML descriptions
  • Allow XML definitions of widget composite types
  • Forward adding/removing children of composite types to sub container with 'child-container' attribute
  • Generalize SizeGroup to WidgetGroup to allow arbitrary grouping of widgets
  • Compose complex widgets (e.g. Scrollbar) from multiple micro widgets (Arrows, Frames, FocusFrame, GripHandle, HBox/VBox, ScrollController, etc)
Event Processing
  • Implemented
  • Add Event classes to process user input events and window resizing
X11 Copy & Paste
  • Implemented
  • Support X11 PRIMARY and CLIPBOARD selections
  • Translate X11 selection atoms into proper mime types (e.g. "text/plain;charset=utf-8")
X11 Backend
  • Implemented (ScreenWindow)
  • Implement standalone X11 backend without further toolkit dependencies.
Seperate UI Thread
  • Implemented (UIThread)
  • Move widget sizing, rendering, etc logic into its own thread
Asynchronous C++ Signals
Dynamic Any
  • Implemented (Aida::Any)
  • Implement dynamic Any type to pass arbitrary values
Tarball Docs
  • Implemented
  • Include full documentation builds in tarballs.
Reference Documentation
  • Implemented
  • Build reference documentation of all sources with Doxygen
  • Extract IDL (property) documentation strings for Doxygen
  • Include manual pages (from testbit.eu/wiki) as HTML
  • Provide HTML coverage report online
IDL based Remote API
  • Implemented (AIDA)
  • Introduce IDL files to specify external API
  • Generate cross-thread remote API invocation from IDL
  • Generate C++ language binding from IDL files
  • Generate Python language binding from IDL files
PRNG & Entropy
  • Implemented
  • Provide a Keccak based CSPRNG
  • Collect Entropy from process stats, devices and /proc
  • Provide SHA3 hash functions
  • Implemented (StringFormatter)
  • string_format: Provide fully functional printf substitute in C++11 without the downsides
  • Replace all printf-like uses with string_format()
  • Implemented
  • Port build system to newer autoconf and automake