tekUI Changelog

0.8j:

  • Gadget renamed to Widget, ListGadget renamed to Lister, ImageGadget renamed to ImageWidget
  • Drawable class: removed
  • Object: Added class-wide handlers and a copy-on-write mechanism for duplicating handlers on object-level on demand; static initialization of handlers is no longer supported
  • Element: added onSetStyle() and obSetClass(), some bugs fixed in style sheet processing
  • Application: hide() hardened for side-effects from shutting down while hide() is still in progress
  • Area: removed Drawable attribute, show() no longer has a drawable argument, removed Margin, added getMargin() and getMinmax(), MinMax, Rect are Region objects now
  • Widget:onClick(), onHold(), onDblClick() added
  • Group:addMember() now allows elements to be added to uninitialized groups
  • Lister:onDoubleClick() renamed to onDblClick() and documented
  • Slider:onHold() documented
  • Visual: added setTextureOrigin(), pushClipRect(), popClipRect(), drawing functions no longer receive texture origins as arguments, added setBGPen(), which can be used to set a background color or a texture for fillRect(), renamed copyarea() to blitArea(), function names are now in lowerCamelCase
  • ScrollGroup: copyArea() renamed to blitArea()
  • Window: Drawable attribute added, it is now created in show() and destroyed in hide(), removed Visible and Pens attributes, invalid color specifications are now silently converted to the 'background' color
  • UI: Changed meaning of MSG_ALL, now excluding MSG_INTERVAL
  • added tek.ui.style.desktop, removed Theme class
  • Improved documentation and stylesheet, added Windows platform installation note
  • Display: Simpler and faster color allocation, added newDrawable(), Drawable now encapsulated by Display
  • Object:doNotify() added, now processes all notifications regardless of esoteric side-effects during traversal, addNotify() positional argument removed
  • UI: Added FL_POPITEM, added getStyleSheet() from former Theme class, removed region functions
  • PopItem: sets FL_POPITEM during connect, overwrites doNotify() to filter out notifications in items which have been neither setup nor connected before
  • Demos: cleanup
  • Region: added get() function, class check is now based on upvalue
  • Optimized default layouter, now using more C structures and fewer Lua stack
  • Editor, Sizeable and EditWindow classes added (not installed globally)

0.8i:

  • Display, Visual: Removed numerical pens, all pens are symbolic now, Display: removed RGBTab and FontTab
  • added ui.support library with functions operating on flag fields
  • added Fixed layouter
  • added Dynamic, Fixed and LayoutHook and improved some demos
  • Element:addStyleClass() added, Properties attribute added, removed getProperty() and getProperties(), style sheet properties, direct formattings and hardcoded class properties are now decoded into a metatable graph
  • EditWindow: localizations added
  • Application: added Style and Preload attributes, removed Theme attribute, renamed Styles to AuthorStyles, added AutorStyleSheets
  • Drawable:getAttrs() split into getWH() and getXY()
  • PopItem: Now also elements descending from CheckMark collapse in popups, no longer uses a "popup-children" style class if an element has children, instead a style class "popup-child" is appended to all children during connectPopItem()
  • CheckMark: in setState(), precedence of the "Hilite" attribute over "Selected" is now also considered for the foreground color
  • MenuItem: a predefined class "menuitem" is now appended to the element's style classes during init()
  • Internal theme: use of menu colors corrected, removed "internal" style sheet, added the respective properties in the "desktop" style sheet.
  • style sheets: 'parent-group' pseudo pen renamed to 'transparent', 'background-position' renamed to 'background-attachment'
  • ui.loadStyleSheet() can now operate on open filehandles
  • RadioImage now paints a back pane
  • ImageGadget: did not implement vertical and right alignments, corrected
  • Input: setting the cursor with the mouse now also updates the LockCursorX attribute, visual cursor position reporting corrected
  • Visual API: Window MaxWidth/MaxHeight wasn't unset when passing 'false', corrected
  • Area: removed relayout() function, rethinkLayout() now has an additional updateminmax argument, added drawBegin() and drawEnd() functions, removed refresh(), layout logic improved for growing elements, added Flag attribute, removed Redraw attribute, removed BGColor, BGPosition, Margin, Padding, getProperties(), FL_CHANGED is now set in rethinkLayout(), added getPadding(), renamed MarginAndBorder to Margin, renamed former 'grid-align' properties to 'halign' and 'valign'
  • FloatText: layout() took an existing Redraw into account, removed
  • Frame: phased out an additional newBorderObject() function, removed RedrawBorder attribute, removed Border and BorderClass attributes, these are created on the fly during border creation and isolated in the border object
  • Group: the Layout argument can now be a class name, not just a layouter instance, calcWeights() is now called when a changed layout is notified, addMember()/remMember() are more solid now, removed getStructure(), getSameSize() and calcWeights(), these are now isolated in the default layouter, removed onActivateGroup(), groups are no longer repainted completely, but only when a fixed background-attachment is indicated
  • Handle: now calls rethinkLayout() as it is supposed to, Orientation is now determined during setup()
  • ListGadget: Removed BGAlt, CursorBorder, CursorBorderClass attributes
  • PageGroup: simplified, now accepts a custom Layout
  • ScrollBar, Slider: updateSlider() is no longer a local function and forwards the call to its super class
  • ScrollGroup: internal sliders are handled more efficiently now, causing a notification in their parent class now only when really needed
  • Slider, Gauge: MaxWidth, Width, MaxHeight and Height are now determined during setup()
  • Spacer: Orientation is now determined during setup()
  • Text: Removed FGDisabled2, Font, TextHAlign, TextVAlign attributes
  • TextInput: Removed FGCursor and BGCursor attributes
  • Window:relayout() changed and no longer descends from Area but is now rooted in the Window class, calcWeights() is now under the control of the Group class
  • UI: freeRegion() and testFlags() removed, added element flags FL_REDRAW, FL_REDRAWBORDER, FL_LAYOUT etc., simplified and renamed prepareStyleSheet() to unpackStyleSheet(), added unpackProperty() for direct formattings, loadStyleSheet() now unpacks properties and merges pseudo class attributes on the fly, removed NULLOFFS, new ui.ThemeName is "default desktop"
  • Layout base class added
  • Default layouter: Now uses the Layout base class in an upvalue to new(), added version string, handles weights internally when a change of a group's contents or weights is indicated using the FL_CHANGED flag, bugs in the SameSize calculation corrected, removed the "auto" state for Width and Height, the logic is now more concise and faster
  • Theme: The internal style sheet is now more minimal and has been renamed to "minimal", many properties have been relocated to the new "default" style sheet
  • Renamed 'check' and 'radio' images to 'checkmark' and 'radiobutton', respectively
  • Region:trans() renamed to shift(), isNull() to isEmpty()
  • Makefiles updated to install new classes, args.lua, fixed layouter, new style sheets
  • Markup: Tables produced erroneous HTML - now pop the current block from the stack
  • Documentation generator: added macro support, added child class macro, tables did not break out of the current block, corrected
  • improved documentation generator, documentation, stylesheet, README

0.8h:

  • Window, Application: Hotkeys are now actuated on keydown, not on keyup
  • Area, UI, Theme, internal stylesheet: PEN_PARENTGROUP renamed to PEN_DEFAULT, "parent-group" pseudo-color renamed to "default", the default color is now also evaluated for the foreground color
  • ImageGadget: Now supports PEN_DEFAULT for not using a single pen for rendering its imagery. This allows control over the greying-out behaviour of images in style sheets. Crashed when no image was set; corrected
  • UI, Display, Theme: Added symbolic pens PAPER and INK, DISABLEDDETAIL2 renamed to DISABLEDDETAILSHINE, LIST2 renamed to LISTALT, symbolic color keys "disabled-detail2" renamed to "disabled-detail-shine", "list2" to "list-alt"
  • Display: more symbolic colors added (black, white, fuchsia, ...), changed cursor color
  • Theme, internal stylesheet: added "field" class
  • ScrollBar: Implementation of arrow button and slider checkFocus() was broken, corrected, added AcceptFocus attribute
  • ScrollGroup: AcceptFocus attribute added
  • dark.css stylesheet added
  • UI: loadLibrary(), require() added, removed pattern argument from loadClass(), minimum version requirements are now enforced in most classes
  • Slider: now checks if it is allowed to receive the focus before it enters capture mode
  • Class:checkDescend() renamed to instanceOf()
  • Group:onActivateGroup() added
  • Window, UI: Doubleclick jitter and timeout are now defined in UI
  • Gendoc: NAME argument is now /K, HEADER is now /K/M, allowing multiple header files. A reference document is now supplied to normal jumps
  • UTF8String: find(), chars() added
  • Canvas: focusRect() now has an optional "smooth" scroll positioning argument, sanity check added
  • Text: now uses the "IgnoreAltShift" peudo qualifier for Keycode shortcuts, KeyCode attribute was lost during repeated invocations of setup(), corrected, 'color2' style property renamed to 'color-disabled'
  • Raw Framebuffer display driver: added
  • 64bit fixes and source code maintenance adjustments merged in from TEKlib
  • X11 Display: Now using the XVid extension and a more sophisticated window opening procedure to much better support fullscreen applications
  • Visual, displays, Drawable: Added TVCMD_FLUSH command to TVRequest, a flush() method and a dirty flag indicating visual changes
  • Visual, Lua bindings: Added length argument to textSize()
  • Args: Partly rewritten, now handles missing keywords correctly in /M/K modifiers
  • Region: added trans(), isNull()
  • Region, Visual: Added _VERSION
  • Application: fixed initial double refresh bug, requestFile() now supports an additional FocusElement argument, setLastKey() added, requesters receive the style class "app-dialog", addMember() now connects children recursively, getModalWindow() added
  • Area:layout() now handles blits in transposed drawing contexts
  • DirList: Added AutoWidth and FocusElement attributes, location field now advances to the action button when Return is pressed
  • Drawable:getClipRect() added, any number of symbolic colors can now be allocated
  • Frame:layoutBorder() split off from layout()
  • ListGadget: fixed to work in absence of a style sheet
  • Window:addBlit() added, update() now calls flush() after repaints, the KEYDOWN message handler now checks if a popup to which this event may have been forwarded collapsed already, improved key repeat/retrigger handling

0.8g:

  • Argument parser: Arguments with whitespaces were treated incorrectly even if they were surrounded by quotes, corrected
  • Documentation generator: Added --author, --created, --adddate options
  • Markup: Added metadata options for "author" and "created"
  • Canvas:damageChild() can now be called without a layout, allowing ListGadget:repaint() to work outside Application:run()
  • DirList: added onSelectEntry() handler
  • Application, Window: Major simplification in setup and closedown procedure, the show() method is now invoked shortly after opening the window
  • Area: Changed meaning of the EraseBG attribute, removed calcOffset, BGPen renamed to BGColor, getElementByXY() renamed to Area:getByXY()
  • Drawable: removed closeFont(), fitMinAspect(), openFont(), drawPlot() renamed to drawPoint()
  • Gadget: Effect renamed to EffectClass, BGPen... to BG..., FGPen... to FG..., InitialFocus is now functional, removed onHold(), simplified
  • Gadget, FloatText: FGPen renamed to FGColor
  • ListGadget: Renamed BGPenAlt to BGAlt
  • TextInput: Renamed BGPenCursor to BGCursor
  • Window:getWindowDimensions() renamed to askMinMax(), show() now invokes Group.show() before askMinMax(), now creates a Drawable during setup() and passes it to its superclass during show()
  • Theme, stylesheets: effect renamed to effect-class, smaller handles
  • Default Border, DrawHook, Border, Ripple Hook: show() renamed to setup(), hide() renamed to cleanup()
  • Frame, ListGadget, TextInput: simplified
  • ScrollBar, Slider: now register Hold notification themselves
  • Application: Status can now be "init", "error", "run" and "quit", some cleanup
  • Application, Area and demos: Some cleanup, improved documentation, demos, texts and imagery
  • Visual module: Added VISUAL_USE_INTERNAL_HASH compile-time option
  • Gendoc: Added --heading option
  • Theme, internal stylesheet: Slightly changed looks of handles

0.8f:

0.8e:

  • Eliminated the use of 'ipairs' in many classes
  • Visual API, Image, ImageGadget, stock images: Changed image table structure, added preliminary support for bitmap pens in frect(), removed futile attemps in rounding from drawimage()
  • UI: Renamed createImage() to getStockImage(), added loadImage(), "background-image" handled, simplified match patterns in property preparation
  • UI, Object: NOTIFY_ALWAYS now behaves like former NOTIFY_CHANGE, NOTIFY_CHANGE has been removed
  • Visual, Visual/Lua binding, display drivers: TVisualText() no longer supports a background pen
  • Nano-X Display driver: drawbuffer now fully supported
  • Visual/Lua binding: drawtext() now requires the complete text bounding box, supports background pixmaps and an additional x/y argument for the texture origin, frect() now supports an additional x/y argument pair for the texture origin
  • Default border: Group and element origins are now considered for texture origins
  • Area: Added BackgroundPosition attribute, "background-position" style property, getBackground() function, erase() now handles texture origins, init() now resets Focus, DamageRegion is or'ed to (no longer overwritten during layout) and no longer reset in erase() but in refresh()
  • Area, Canvas, FloatText, Gauge, Group, ImageGadget, ListGadget, Slider: erase() and draw() now consider texture origin
  • Display: Added AspectX, AspectY, added fitMinAspect(), added pixmap cache, createPixmap(), loadPixmap(), getPixmap(), "ui-huge" font default is now "Utopia", which is scalable and common under X11 even without Xft support
  • Drawable: Removed AspectX, AspectY, added support for color allocation by accessing Pens with an "#rrggbb" key, added texture loader reacting on url(...) keys, RGB colors are now cached with an unique identifier to avoid double allocation, some sanity checks added
  • ImageGadget: Some layouting problems fixed, added several checks for presence of an image, now supports ImageAspectX, ImageAspectY
  • PopItem: removed "popup-root" and "popup-children" pseudo classes, these are now predefined classes and set during connect() if no other Class is specified
  • Element, Application:getElementById(), getId() unified and renamed to getById()
  • Visual API: Added pixmap objects, createpixmap(), freepixmap(), renamed drawppm() to drawpixmap(), frect() now supports rendering a pixmap with a texture origin
  • Merged BitmapImage and VectorImage class to Image
  • Gadget: onActivate() now implements collapsing of popups, removed the same functionality from PopItem - CheckMark, RadioButtons etc. are now functional in popups
  • Group:markDamage() checks for presence of a FreeRegion now, markDamage() and layout() are now better prepared for tracking intra-area damages
  • PopItem: no longer resets Selected and Focus when opening
  • Region: checkoverlap() always returned true, corrected
  • CHANGES, VERSION: added
  • Documentation improved
  • Gendoc: Added support for the --header option in class tree documentations
  • Theme, internal stylesheet: Added background-position attributes
  • Installation: BitmapImage, VectorImage classes removed, Image class, desktop.css, texture.css added
  • Gauges with vertical orientation are now running from bottom to top
  • Minor corrections in image layouting procedures and image data
  • CheckMark, PopItem: Improved image size calculation
  • MenuItem, PopList, Arrow Images: Corrected distorted coordinates
  • X11 Display: Removed a kludge that disabled Xft font rendering when the composite extension was detected
  • Theme, Family, Element, Drawable, Button, Application, UTF8String: Minor corrections in the documentation
  • Demos: Images were incompletely read under Windows and appeared scrambled, corrected, improved border demo, changed some font attributes

0.8d:

  • Application:quit() added, can now be passed an initial Display
  • Area, Canvas, Gadget: Added AutoPosition feature
  • CheckMark:setState(): Hilite has now precedence over Selected
  • CheckMark, RadioButton, ScrollBar: Now using external images
  • Compiler: added
  • Debug: Default level reset to WARN (this time also reflected in the documentation)
  • Display: added colors user1 ... user4, colorNameToRGB(), getPaletteEntry(), removed allocPens()
  • Drawable: now supports on-demand allocation of custom colors
  • Element: Added getNumProperty(), slightly optimized
  • List:changeItem() was using a global instead of an argument, corrected
  • Installation procedure corrected
  • Meter class and example rewritten
  • Minor corrections and improvements in the documentation
  • PopItems: corrected notification handler for Active, fixing long-standing double-activation bug
  • Region.new() can now cope with an empty initial rectangle
  • Slider: AutoFocus is now false by default, improved keyboard usage
  • Theme, internal stylesheet: minor corrections
  • Text:getTextSize() now also returns the layouted x/y, if present
  • UI: Added image class loader and createImage(), added PEN_NUMBER, PEN_USER1 through PEN_USER4, createHook() now returns false on the predefined name "none"
  • UI, Display, Theme: PEN_LIGHT removed, added PEN_OUTLINE
  • UTF8String: set() and char() can now be overridden, removed __tostring() and __concat(), unpack() was not known in byte()
  • VectorImage, BitmapImage: data fields are now indexed numerically
  • Visual API: drawImage() data structure changed, implementation simplified and several problems rectified
  • Visual:drawImage(), ImageGadget, VectorImage:draw() now supports an override_pen argument for rendering an image monochromatically

0.8c:

  • README: Improved, updated
  • Debug: verbosity set to ERROR
  • Application: requestFile() arg.Center can now be set to false
  • Area: layout() simplified, should handle more blitting cases
  • Button, CheckMark, MenuItem, PopItem: keycode can now be set to false
  • FloatText, ListGadget: TrackDamage can now be set to false
  • Frame: border repaints can now be avoided if an element was blitted
  • Text:onSetText() causes a less destructive repaint if KeepMinWidth is enabled
  • Window: blits and updates are now implemented in the overriden refresh() method and synchronized, removed notify option in SetHiliteElement(), setFocusElement(), setActiveElement(), setDblClickElement(), improved documentation

0.8b:

  • CHANGES added