In the WRX...
These are the features planned for forthcoming releases of airWRX.
UI to move part up/down a layer.
UI to remove part (moves to recycle bin layout).
On part move/resize, hide controls on other clients.
On part move/resize/app-size past client edge, scroll layout.
UI to expand/shrink whitespace row/column.
Zoom control Zą.
UI to set scrolled position when zoomed out.
On drag-drop, set cursor for underlying object.
Clipboard layout for objects that were cut and never pasted; show current clip data.
Message logs per layout and for system-wide messages.
Internet web creates temporary layouts for URL hits; reuse after certain number.
Per-web object with list of layout ids & on-demand flag.
Layout may appear in multiple webs.
Menu and Webs control by keyboard shortcuts.
User ordering of Webs & Layouts bars by drag-drop.
Create link by drag-drop from layout list to part.
Create "soft" link in layout list by drag-drop from webs list.
Layout view of prev/next/home links.
Create palette on app request.
On focus change, show/hide palettes.
Palette can be pinned to menubar by user.
Split screen icon at bottom-left;
drag icon shows prev in history, tap steps back another;
new icon on right page corner, drag adjusts split, tap to advance left page or close split.
Part maximize gives one part full screen;
group for each maxed part, client groupend, bg rect in front of scene;
app requests bg coordinates and receives base el & new instance id.
Part embedding; hand part id to app; app updates xywh; move as a group.
Format menu checkbox "selection"; cut-paste text selection to new object;
create embedded part for object in choosen format.
If unknown or friend term, hide webs.
Menu "n users" lists user + # terms; opens on console term on login.
Terminals layout with owner/friend/unknown menu per id.
Printing features: pagebreak & header & footer (special layout-controlled parts), preview document, etc.
List printers reported by clients; submit to printer.
Export SVG to file on client.
Widget Menu extensions:
embedded/popup, h-w-rows-cols, group prev/next, item check/radio/button/label.
Widget Text utility class with ASCII & Unicode versions.
Widget Arithmetic expression utility <calc exp="1+2" base=10>result</calc>.
Widget Textbox read-only, non-scrolling, character limit options;
for non-scrolling when view filled show 'more',
on input or select expand to scrolling view, align top/bottom.
Widget Scrollbar steps by line/s when tapped/dragged on bar.
Widget handlers invoke app code on widget events: app provides func ptr, data ptr;
widget event() calls handler before/after/instead-of std procedure;
handler takes widget-specific msg & widget ptr;
app puts widgets on widgetlist;
if std-widget app calls widgetlist.event(widgetT, appid, system-msg).
Package APIs in shared library (Server, Scene, Widget, Client, System).
System API memory allocation quota.
System API omits createprocess, createfile, createwindow, loadlibrary, shellexec;
provides replacement for stdio.h; flags use of windows.h.
Client API stores client-specific app data.
Scene API handle text controls home, end, pgup, pgdn.
Scene API update transactions.
Key sequences for Unicode symbols.
Clipboard per-client; persistent; abandoned clips sent to clipboard layout.
Start/stop processes for apps; stop/restart non-responding app.
Exe started for app invokes shared libs for API & app.
Client state data in shared memory.
Save states; remove states for long-gone clients.
On first login for owner or friend, get pass phrase twice and record input.
First login must set owner pass phrase.
Server provide encrypted name to term on first ack.
Disallow further unknown terms during session.
Friend list: accessible layouts, access level read/add/modify/delete.
App installation verifies app not linked to win libs;
App auto-start config per-user; UI to skip auto-starts.
Support binary-format objects (images, etc.).
Editing api ins/upd/del/find.
Refcount instances using object;
write perm granted to one inst on request; notify readers on mod.
Auto-save: server request updates at 2s intervals by semphr, fill update queue,
server async writes.
Indexing: mark content types for auto-index.
Insert & index object meta-data.
Versioning; version edit history for undo.
Sophisticated query interface.
Minimize xml gen? file organized in blocks, match flash block size, block map;
for each change (pos,len,ins/del/mod) calc block change (n,size,src,pos,len), add queue entries, gen xml in entries.
Store & forward server.
May cache on-demand content originating at service provider.
join (member name, addr list; returns airWRX id);
invite user (airWRX id, web id, member ids, recipient addr forward by email if unknown);
request update (for on-demand or just-invited; airWRX id, web id, object id, member ids),
checks service cache,
forwarded to each member as available and remains in queue until one sends content update;
content update (airWRX id, web id, member ids),
remains in queue until each member gets it.
Eventually, forwarding between services.
Client / SVGTerm
list of known servers.
Sound cache and playing.
Export local clipboard contents by button in import file dialog.
Browser element, call app as embedded object in child window.
Print on local printer.
Image: Example palette: flip, rotate, scale.
Text: Cut & paste.
Split content between multiple parts in layout.
Drag layout link onto highlight to set hyperlink.
Chat: List available users.
Shell for text-only apps.
Content organizer: links, notes, sketches, outlines, email correspondence.
Presentation maker: drawing, graphing, outlining, animation.
PDA: calendar, address book, todo list.
Help browser for topics list object; topic layouts marked "on-demand, cache";
users propose new topics by adding layout;
help-publishing editor (only installed at hq) marks incoming topics "on-demand, no-cache";
accepted topics added to list object.