Description
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.
FINAL CUT alternatives and similar libraries
Based on the "GUI" category.
Alternatively, view FINAL CUT alternatives based on common mentions on social networks and blogs.
-
libui
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports. [MIT] -
webview
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and MSHTML (Windows) -
wxWidgets
A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. [Own LGPL] -
GacUI
GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL] -
Sciter
Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications. [Free/Commercial] -
copperspice
CopperSpice is of a set of C++ libraries used to develop cross-platform software applications. -
PDCurses
Public domain curses library with both source code and pre-compiled library available. [PublicDomain] -
Turbo Vision
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support. -
QwtPlot3D
A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets. [zlib]
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of FINAL CUT or a related project?
README
[FINAL CUT](logo/svg/finalcut-logo.svg)
Library for creating terminal applications with text-based widgets
FINAL CUT is a C++ class library and widget toolkit with full [mouse](doc/mouse-control.md#title-bar-actions-on-mouse-clicks) 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.
Building and code analysis
Badge | |
---|---|
Latest release | |
License | [ |
Class Reference | |
Travis CI | |
Coverity Scan | |
LGTM | |
SonarCloud | |
CodeFactor |
Installation
> git clone git://github.com/gansm/finalcut.git
> cd finalcut
> autoreconf --install --force
> ./configure --prefix=/usr
> make
> su -c "make install"
Supported platforms
- Linux
- FreeBSD
- NetBSD
- OpenBSD
- macOS
- Cygwin
- Solaris
First steps
See the [first steps](doc/first-steps.md#first-steps-with-the-final-cut-widget-toolkit) documentation for information on how to use the library.
Some screenshots
The FFileDialog widget with incremental file name search:
[FFileDialog](doc/fileopen-dialog.png)
The FINAL CUT FProgressbar widget:
[FProgressbar](doc/progress-bar.png)
Scrollable text in the FTextView widget:
[FTextView](doc/textview.png)
The Mandelbrot set example:
[Mandelbrot set](doc/Mandelbrot.png)
newfont
A [graphical text font](fonts/) for X11 and the Linux console.
[ui example in newfont mode](doc/newfont1.png)
Newfont drive symbols:
[drive symbols](doc/newfont2.png)
The calculator example in newfont mode:
[calculator](doc/calculator.png)
Benchmark
Here you can find a test for [measuring the character speed](doc/benchmark.md#benchmark) in the terminal.
Virtual 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 β β β βββββββββββββββββ βββ βββββββββ
Class digramm
1ββββββββββββββ β-----------β€ FTermLinux β : ββββββββββββββ : 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βββββββββββ β ββββββββββββββ1 1βββββββββ β-----------β€ FSystem β ββββββ€ FUserEvent β------β€ FData β : βββββββββββ β ββββββββββββββ βββββββββ : βββββββββββ β ββββββββ βββββββββββ : β--------β€ FString β β β FLog βββββ€ FLogger β : : βββββββββββ β ββββ¬ββββ βββββββββββ : : *βββββββββββββββββ β :1 : β--------β€ FStringStream β β ββββ΄ββββββββββββ : : βββββββββββββββββ β ββββββ€ FApplication β : : *ββββββββββ β β ββββββββββββββββ : β--------β€ FPoint β β β ββββββββββ : : ββββββββββ β ββββββ€ FLabel β : : *βββββββββ β β ββββββββββ : β--------β€ FRect β β β βββββββββββββ : : βββββββββ β ββββββ€ FLineEdit β : : *βββββββββ β β βββββββββββββ : β--------β€ FSize β β β ββββββββββββ : : βββββββββ β ββββββ€ FSpinBox β :1 :1 β β ββββββββββββ βββ΄βββ΄βββ β β βββββββββββ β FTerm β β ββββββ€ FButton β βββββ¬ββββ ββββββββββ β β βββββββββββ :1 β FEvent ββββββββ β ββββββββββββββββ ββββββββββββββββ βββββ΄βββββ ββββββ¬ββββ ββββββ€ FButtonGroup β ββββ€ FRadioButton β β FVTerm βββββ :1 β ββββββββββββββββ β ββββββββββββββββ ββββββββββ β ββββββ΄βββββ β βββββββββββββββββ β βββββββββββββ ββββββ€ FWidget ββββββββββΌβββββ€ FToggleButton ββββΌβββ€ FCheckBox β βββββββββββ β ββββββ¬βββββ β βββββββββββββββββ β βββββββββββββ β FObject βββββ :1 β ββββββββββββββββ β βββββββββββ βββββββββββ ββββββββ΄βββββββββ ββββββ€ FProgressbar β ββββ€ FSwitch β β FWidgetColors β β ββββββββββββββββ βββββββββββ βββββββββββββββββ β ββββββββββββββ ββββββ€ FScrollbar β β ββββββββββββββ β βββββββββββββ ββββββ€ FTextView β β βββββββββββββ β βββββββββββββ1 1ββββββββββββββββββββ ββββββ€ FComboBox β------β€ FDropDownListBox β β βββββββββββββ ββββββββββββββββββββ βββββββββββββββ1 β ββββββββββββ1 *ββββββββββββββββ1 β FTermBuffer β----------------------ββββββ€ 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 β---β ββββββββββββββββββ
Frequently Asked Questions
For general questions about FINAL CUT, likely the answer is already included in the [FAQ](doc/faq.md#frequently-asked-questions).
Please send bug reports to
https://github.com/gansm/finalcut/issues
License
GNU Lesser General Public License Version 3
*Note that all licence references and agreements mentioned in the FINAL CUT README section above
are relevant to that project's source code only.