FLTK Virtual Widgets

flvw


FLTK 1.x and 2.x compatable widgets

Source
Last tarball
Note: This will not be as current as CVS. If the link seems old drop me a line and I'll update it.

CVS Root
CVS

Mailing Lists
Announce list
Users list
Developers list

Subscribe lists Announce
Develop
User

Screen shots
List widget pictures.
Table widget pictures.
Exerciser screen shots.

Documentation
Documentation.

Contact
Larry Charlton

Changes
01/18/2000
01/15/2000
01/05/2000
12/21/1999
12/19/1999
12/18/1999
12/17/1999
12/15/1999
12/13/1999
12/12/1999
12/09/1999
12/05/1999

FLTK Homepage
FLTK Homepage

Site hosts

Sections

Flv_List Flv_Table Flv_CTable

Introduction

These widgets require the use of the FLTK library. The virtual widgets are widgets designed to handle large amounts of data. As such they are definitely not the smallest of FLTK widgets, but they are designed to use memory conservatively.

To give you a good idea of how the base widgets work, there is an exerciser program that will allow you to view many of the features of both the table and the list widgets. There is also a dynamically resizing column demo (testtable2).

Virtual List widget

Flv_List implements a scrollable list. No data is stored in the widget. This widget must be inherited to actually display information. Simple text drawing in a row requires 4 lines of code, class definition, 7 lines. Several other functions can be implemented to support dynamic styles, row heights, etc.
Features:
  • Optional header/footers for rows
  • Optional list title
  • Dynamic row height with native support styled row heights on a per row basis
  • Optional horizontal/vertical scroll bars (none, automatic, or always on)
  • Row selection
  • Optional contiguous range selection
  • Optional persistant selection (selection drawn when widget not focused)
  • Absolute cell references
  • Dynamic and trickle down virutal style support (Not 2.x styles). Trickle down order is default value, global style, row style. With support for drawing alignment, background color, borders, font face, font size, foreground color, frame style, row height, column width, resizable, locked/editable.
  • Borders support any edge of row, and may be single or double line borders with programmable spacing between inner and outer borders and selectable color.
  • Programmable scrollbar width
  • Support for 0 to ~2 billion rows and columns
  • Call backs on row/selection/feature changes
  • Keyboard and mouse support
  • Optional mouse based row resizing Any row can be optionally protected from resizing.
  • Todo: Row editing

Virtual Table widget

Flv_Table implements a table/grid. No data is stored in the widget. This widget must be inherited to actually display information. Simple text drawing in row requires 4 lines of code, class definition, 7 lines. Several other functions can be implemented to support dynamic styles, row height, column width, etc.
Features:
  • Optional header/footers for rows and columns
  • Optional title for widget
  • Dynamic row height/column width with native support for styled heights/widths on a per row/column basis.
  • Optional horizontal/vertical scroll bars (none, automatic, or always on)
  • Cell or Row selection
  • Absolute cell references
  • Optional contiguous range selection
  • Optional persistant selection (selection drawn when widget not focused)
  • Dynamic and trickle down virutal style support (Not 2.x styles). Trickle down order is default value, global style, row style, column style, and cell style. With support for drawing alignment, background color, borders, font face, font size, foreground color, frame style, row height, column width, resizable, locked/editable.
  • Borders support any edge of cell, single or double line borders with programmable spacing between inner and outer borders and selectable color.
  • Programmable scrollbar width
  • Support for 0 to ~2 billion rows and columns
  • Call backs on row/col/selection/feature changes
  • Keyboard and mouse support
  • Optional mouse based row/column resizing supports header only or full widget area resizing at cell boundaries. Any section of the widget can be optionally protected from resizing.
  • Todo: Cell editing
  • Probbably of few I forgot... :)

Complex layout table widget

In addition to the features of Flv_Table this will support multiple row layouts as well as random cell placement within a row for each layout.