NOTE that this project has no files. Please pull directly from the git repository for now.
Also note: LSR-1.0 is very modular in design. Each element, from widgets, to plugins, to LCD elements, they're all individual addons and can be installed next to each other. Keep in mind that some elements require other elements, such as WidgetText's need for UtilsBuffer, et al.
- - - -
LibScriptable is an OOP library that provides various means to make an addon's display lower-level configurable, from scriptable bar and text widgets, to full blown data visualizations that may appeal to graphing calculator pros.
The basics of creating widgets requires you to supply a "core" or some table that's common across a collection of other widgets. This core object populates the environment with all plugins and their functions and fields.
Widgets exist to process a script's return values and store the results internally. Some widgets may execute a callback you provided in order to "draw" on the surface once the script's been run and data stored.
Here's a list of widgets:
This is the foundation for each widget and is used internally by them. It is built of fields common amongst all widgets.
You can base your status bars on this widget.
Great for configuring backgrounds or borders.
Picture 10 vertical status bars side by side, showing you your most recent health status.
This is more less a scriptable framebuffer that an addon author can build an image from.
These are otherwise known as marquees. They can be animated or they can be stationary.
Various utilities and tools used by LibScriptable. Here's a list:
This is suitable for recycling tables with as little ghost-growth as possible. I use it for text processing and as a video framebuffer. I also store numerical data with this in LibScriptablePluginNoise-1.0 and use LibBuffer's method MovingAverageExp() to smooth things out a bit.
Provides a way to categorize message alerts within an addon, so you can have more critical messages pass through untouched, but it may drop a request to print some common message.
Here's your optionally sandboxed run environment. It consists of one function: LibEvaluator.ExecuteCode, which you can use to grab the return values, or just pass back the runnable function object housing the provided script.
LibEvaluator isn't object oriented like the larger part of LibScriptable. LibProperty is an OO wrapper around LibEvaluator.
Some elements of LibScriptable provide Acd3 option tables an addon author can plug directly into an Ace3 config table. Some option strings may need to be translated. Some plugins may also need localizations. There're some plans to compile a list of commonly used strings and provide translations for those.
A no-hassle and simple to operate timer object. This element has gone through several versions and optimizations and I'm extremely happy with the outcome.
Plugins exist to populate a run environment with functions and other fields.