FINAL CUT is a C++ class library and widget toolkit that enables developers to create text-based user interfaces. FINAL CUT is a standalone library that interacts directly with the terminal without relying on external libraries such as ncurses or termbox.
FINAL CUT provides full mouse support, UTF-8 character encoding, full-width character support, and the ability to display combined Unicode characters. The library helps the programmer to create a text console application. It allows handling multiple text windows on the screen.
The design of the C++ class structure of FINAL CUT was inspired by the Qt framework. It provides a variety of common controls, including dialog boxes, push buttons, check boxes, radio buttons, input lines, list boxes, and status bars. With FINAL CUT, developers can create text-based user interfaces that are both functional and visually appealing.
Badge | |
---|---|
Latest release | |
License | |
Class Reference | |
ARM build | |
FreeBSD build | |
NetBSD build | |
OpenBSD build | |
macOS build | |
Cygwin build | |
Solaris build | |
CodeQL analysis | |
Coverity Scan | |
SonarCloud | |
CodeFactor | |
SIGRID |
Before installing FINAL CUT, check if your computer meets the requirements. You can find these in the FAQ section under "What do I need to build this library?".
> git clone https://github.com/gansm/finalcut.git
> cd finalcut
> autoreconf --install --force
> ./configure --prefix=/usr
> make
> su -c "make install"
If your platform is not listed here, it may still be compatible with FINAL CUT. I welcome any help to make this software available on more platforms.
FINAL CUT currently works on the following platforms:
- Linux
- FreeBSD
- NetBSD
- OpenBSD
- macOS
- Cygwin
- GNU Hurd
- Solaris
See the first steps documentation for information on how to use the library.
For general questions about FINAL CUT, likely the answer is already included in the FAQ.
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:
Here you can find a test for measuring the character speed in the terminal.
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 โ FTermLinux โ------โ โโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโ1 : โ FTermFreeBSD โ------โ โโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโ1 : โ FTermOpenBSD โ------โ โโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโโโ1 : โ FTermDetection โ------โ โโโโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโโโ1 : โ FTermcapQuirks โ------โ โโโโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ1 : โโโโโโค FKeyEvent โ โ FTermXTerminal โ------โ โ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ1 : โโโโโโค FMouseEvent โ โ FTermcap โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ1 : โโโโโโค FWheelEvent โ โ FTermios โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ1 : โโโโโโค FFocusEvent โ โ FColorPalette โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโ1 : โโโโโโค FAccelEvent โ โ FOptiMove โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ1 : โโโโโโค FResizeEvent โ โ FOptiAttr โ------โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ1 : โโโโโโค FShowEvent โ โ FKeyboard โ------โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ1 : โโโโโโค FHideEvent โ โ FMouseControl โ------โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ1 : โโโโโโค FCloseEvent โ โ FSystem โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ* : โโโโโโค FTimerEvent โ โ FString โ---โ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ : : โ โโโโโโโโโโโโโโ1 1โโโโโโโโโ โโโโโโโโโโโโโโโโโ* : : โโโโโโค FUserEvent โ------โค FData โ โ FStringStream โ---โ : โ โโโโโโโโโโโโโโ โโโโโโโโโ โโโโโโโโโโโโโโโโโ : : โ โโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโ* : : โ โ FLog โโโโโค FLogger โ โ FPoint โ---โ : โ โโโโฌโโโโ โโโโโโโโโโโ โโโโโโโโโโ : : โ :1 โโโโโโโโโ* : : โ โโโโดโโโโโโโโโโโโ โ FRect โ---โ : โ โโโโโโค FApplication โ โโโโโโโโโ : : โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโ* : : โ โ โโโโโโโโโโ โ FSize โ---โ : โ โโโโโโค FLabel โ โโโโโโโโโ : : โ โ โโโโโโโโโโ :1 :1 โ โ โโโโโโโโโโโโโ โโโโโดโโโดโ โ โโโโโโค FLineEdit โ โ FTerm โ โ โ โโโโโโโโโโโโโ โโโโโฌโโโโ โ โ โโโโโโโโโโโโ :1 โ โโโโโโค FSpinBox โ โโโโโโโโโโโ โโโโโโโโดโโโโโโโ โ โ โโโโโโโโโโโโ โ FOutput โโโโโค FTermOutput โ โ โ โโโโโโโโโโโ โโโโโโฌโโโโโ โโโโโโโโโโโโโโโ โ โโโโโโค FButton โ : โโโโโโโโโโ โ โ โโโโโโโโโโโ :1 โ FEvent โโโโโ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโดโโโโโ โโโโโโฌโโโโ โโโโโโค FButtonGroup โ โโโโค FRadioButton โ โ FVTerm โโโโโ :1 โ โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโ โ โโโโโโดโโโโโ โ โโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโ โโโโโโค FWidget โโโโโโโโผโโโโโค FToggleButton โโโโผโโโค FCheckBox โ โโโโโโโโโโโ โ โโโโโโฌโโโโโ โ โโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโ โ FObject โโโโโ :1 โ โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโ โโโโโโฌโโโโโ โโโโโโโโดโโโโโโโโโ โโโโโโค FProgressbar โ โโโโค FSwitch โ โผ โ FWidgetColors โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโ โโโโโดโโโโโ โโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโ โ FTimer โ โโโโโโค FScrollbar โ โโโโโโโโโโ โ โโโโโโโโโโโโโโ โ โโโโโโโโโโโโโ โโโโโโค FTextView โ โ โโโโโโโโโโโโโ โ โโโโโโโโโโโโโ1 1โโโโโโโโโโโโโโโโโโโโ โโโโโโค FComboBox โ------โค FDropDownListBox โ โ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ1 โ โโโโโโโโโโโโ1 *โโโโโโโโโโโโโโโโ1 โ FVTermBuffer โ-------------------โโโโโโค FListBox โ-------โค FListBoxItem โ--โ โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ : โ 1โโโโโโโโโโโโโ1 *โโโโโโโโโโโโโโโโโ : โโโโโโค FListView โ------โค FListViewItem โ : โ โโโโโโโโโโโโโ โโโโโโโโโโฌโโโโโโโ : โ โโโโโโโโโโโโโโโ :1 : โโโโโโค FScrollView โ โโโโโดโโโโ1 : โ โโโโโโโโโโโโโโโ โ FData โ----โ โ โโโโโโโโโ โ โโโโโโโโโโโโโโ1 *โโโโโโโโโโโโโโ โ โโโโค FStatusBar โ-----โค FStatusKey โ โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ โ โ โผ โโโโโโโโโโโโโโโ โโโโโดโโดโโโโ โโโโโโโโโโโ โโโโค FFileDialog โ โ FWindow โโโโค FDialog โโโโโค โโโโโโโโโโโโโโโ โโโโฌโโโฌโโโโ โโโโโโโโโโโ โ โโโโโโโโโโโโโโโ โฒ โฒ โโโโค FMessageBox โ โ โ โโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ โโโโโโโโค FToolTip โโโโค FBusyIndicator โ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โ โโโโโค FMenuBar โ โโโโโโโโโโโโโ โโโโโโโโค โโโโโโโโโโโโ โ FMenuList โโโโโโโโโโโโโค โโโโโโโโโ โโโโโโฌโโโโโโโ โโโโโค FMenu โโโโโ :1 โโโโโโโโโ โ : โโโโโโโโโโโโโโโโโโโ โ : โ FDialogListMenu โโโโโ : โโโโโโโโโโโโโโโโโโโ โ--------------------------------โ :* โโโโโโโโโโโโโโโโโโ* : โโโโโโดโโโโโโ โโโโค FCheckMenuItem โ---โ โFMenuItem โโโโค โโโโโโโโโโโโโโโโโโ : โโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโ* : โโโโค FRadioMenuItem โ---โ โโโโโโโโโโโโโโโโโโ
https://github.com/gansm/finalcut/issues
Licensed under the GNU Lesser General Public License, Version 3.0