The FINAL CUT is a C++ class library and widget toolkit with full mouse support for creating a text-based user interface. The library supports the programmer to develop an application for the text console. It allows the simultaneous handling of multiple text windows on the screen.
The structure of the Qt framework was originally the inspiration for the C++ class design of FINAL CUT. It provides common controls like dialog boxes, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on.
| Badge | |
|---|---|
| Latest release | |
| License | |
| Class Reference | |
| Travis CI | |
| Coverity Scan | |
| LGTM | |
| CodeFactor |
> git clone git://github.com/gansm/finalcut.git
> cd finalcut
> autoreconf --install --force
> ./configure --prefix=/usr
> make
> su -c "make install"- Linux
- FreeBSD
- NetBSD
- OpenBSD
- macOS
- Cygwin
- Solaris
See the first steps documentation for information on how to use the library.
The FFileDialog widget with incremental file name search:
The Final Cut FProgressbar widget:
Scrollable text in the FTextView widget:
The Mandelbrot set example:
A graphical text font for X11 and the Linux console.
Newfont drive symbols:
The calculator example in newfont mode:
FINAL CUT uses a virtual terminal to print character via an update method on the screen. It provides (as an overlying layer) virtual windows for the realization of window movements. The update methods only transfer differences to the virtual terminal or physical screen.
print(...)
printf(...)
β
β βββββββββββββββββββββββββ[ vterm ]βββββββββββββββββββββββββ
β βcreateVTerm() β
β β β β β β β β β β β β β β β β
β β β
β β β restoreVTerm(x,y,w,h) β β
β βββββββββ¨ββββ[ vwin ]βββββββββββββ β
β βcreateArea(area) β β β β β β β β β β β β β β β
β β β β
β β β β
ββββΌβββββββββΊ putArea(area) βββββΊ β
β β β
β putArea(x,y,area) βββββΊ β
β β β
β βββββ getArea(x,y,area) β
β β β
β β β
β β β
β resizeArea(area)β β
βββββββββ₯βββββββββββββββββββββββββ β
β β
β β resizeVTerm()β
βββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β putVTerm()
ββββββββββββββββββββΊ updateTerminalLine(y)
updateTerminal() β
βΌ
βββββββββββββββββ
β output_buffer β
βββββββββββββββββ
β
β flushOutputBuffer()
β and putchar(char)
βΌ
βββββββββββββββββ
β β
β screen β
β βββββββββββββ β
β real terminal β
β β
βββββββββββββββββ
βββ
βββββββββ
1ββββββββββββββββ
β-----------β€ FTermFreeBSD β
: ββββββββββββββββ
: 1ββββββββββββββββ
β-----------β€ FTermOpenBSD β
: ββββββββββββββββ
: 1ββββββββββββββββββ βββββββββββββ
β-----------β€ FTermDetection β ββββββ€ FKeyEvent β
: ββββββββββββββββββ β βββββββββββββ
: 1ββββββββββββββββββ β βββββββββββββββ
β-----------β€ FTermcapQuirks β ββββββ€ FMouseEvent β
: ββββββββββββββββββ β βββββββββββββββ
: 1ββββββββββββββββββ β βββββββββββββββ
β-----------β€ FTermXTerminal β ββββββ€ FWheelEvent β
: ββββββββββββββββββ β βββββββββββββββ
: 1ββββββββββββ β βββββββββββββββ
β-----------β€ FTermcap β ββββββ€ FFocusEvent β
: ββββββββββββ β βββββββββββββββ
: 1ββββββββββββ β βββββββββββββββ
β-----------β€ FTermios β ββββββ€ FAccelEvent β
: ββββββββββββ β βββββββββββββββ
: 1βββββββββββββββββ β ββββββββββββββββ
β-----------β€ FColorPalette β ββββββ€ FResizeEvent β
: βββββββββββββββββ β ββββββββββββββββ
: 1βββββββββββββ β ββββββββββββββ
β-----------β€ FOptiMove β ββββββ€ FShowEvent β
: βββββββββββββ β ββββββββββββββ
: 1βββββββββββββ β ββββββββββββββ
β-----------β€ FOptiAttr β ββββββ€ FHideEvent β
: βββββββββββββ β ββββββββββββββ
: 1βββββββββββββ β βββββββββββββββ
β-----------β€ FKeyboard β ββββββ€ FCloseEvent β
: βββββββββββββ β βββββββββββββββ
: 1βββββββββββββββββ β βββββββββββββββ
β-----------β€ FMouseControl β ββββββ€ FTimerEvent β
: βββββββββββββββββ β βββββββββββββββ
: 1βββββββββββ β
β-----------β€ FSystem β β
: βββββββββββ β
: *βββββββββββ β
: β--------β€ FString β β ββββββββββββββββ
: : βββββββββββ β ββββββ€ FApplication β
: : *ββββββββββ β β ββββββββββββββββ
: β--------β€ FPoint β β β βββββββββββ
: : ββββββββββ β ββββββ€ FButton β
: : *βββββββββ β β βββββββββββ
: β--------β€ FRect β β β ββββββββββ
: : βββββββββ β ββββββ€ FLabel β
: : *βββββββββ β β ββββββββββ
: β--------β€ FSize β β β βββββββββββββ
: : βββββββββ β ββββββ€ FLineEdit β
:1 :1 β β βββββββββββββ
βββ΄βββ΄βββ β β ββββββββββββββββ ββββββββββββββββ
β FTerm β β ββββββ€ FButtonGroup β ββββ€ FRadioButton β
βββββ¬ββββ ββββββββββ β β ββββββββββββββββ β ββββββββββββββββ
:1 β FEvent ββββββββ β βββββββββββββββββ β βββββββββββββ
βββββ΄βββββ ββββββ¬ββββ ββββββ€ FToggleButton ββββΌβββ€ FCheckBox β
β FVTerm βββββ :1 β βββββββββββββββββ β βββββββββββββ
ββββββββββ β ββββββ΄βββββ β ββββββββββββββββ β βββββββββββ
ββββββ€ FWidget ββββββββββΌβββββ€ FProgressbar β ββββ€ FSwitch β
βββββββββββ β βββββββββββ β ββββββββββββββββ βββββββββββ
β FObject βββββ β ββββββββββββββ
βββββββββββ ββββββ€ FScrollbar β
β ββββββββββββββ
β βββββββββββββ
ββββββ€ FTextView β
β βββββββββββββ
β ββββββββββββ1 *ββββββββββββββββ
ββββββ€ FListBox β-------β€ FListBoxItem β
β ββββββββββββ ββββββββββββββββ
βββββββββββββββ1 β 1βββββββββββββ1 *βββββββββββββββββ
β FTermBuffer β----------------------ββββββ€ FListView β------β€ FListViewItem β
βββββββββββββββ β βββββββββββββ βββββββββββββββββ
β βββββββββββββββ
ββββββ€ FScrollView β
β βββββββββββββββ
β ββββββββββββββ1 *ββββββββββββββ
β ββββ€ FStatusBar β-----β€ FStatusKey β
β β ββββββββββββββ ββββββββββββββ
β β
β βΌ βββββββββββββββ
βββββ΄ββ΄ββββ βββββββββββ ββββ€ FFileDialog β
β FWindow ββββ€ FDialog βββββ€ βββββββββββββββ
ββββ¬βββ¬ββββ βββββββββββ β βββββββββββββββ
β² β² ββββ€ FMessageBox β
β β βββββββββββββββ
β β ββββββββββββ
β ββββββββ€ FToolTip β
β ββββββββββββ
βββββββββββββββββ ββββββββββββ
β βββββ€ FMenuBar β
βββββββββββββ ββββββββ€ ββββββββββββ
β FMenuList βββββββββββββ€ βββββββββ
ββββββ¬βββββββ βββββ€ FMenu βββββ
:1 βββββββββ β
: βββββββββββββββββββ β
: β FDialogListMenu βββββ
: βββββββββββββββββββ
β--------------------------------β
:* ββββββββββββββββββ* :
ββββββ΄ββββββ ββββ€ FCheckMenuItem β---β
βFMenuItem ββββ€ ββββββββββββββββββ :
ββββββββββββ β ββββββββββββββββββ* :
ββββ€ FRadioMenuItem β---β
ββββββββββββββββββ
GNU Lesser General Public License Version 3
For general questions about FINAL CUT, likely the answer is already included in the FAQ.