A text-based widget toolkit
Go to file
Markus Gans 129384d416 Version 0.4.0 2017-11-04 07:03:53 +01:00
debian Version 0.4.0 2017-11-04 07:03:53 +01:00
doc Move fonts into the root directory 2017-11-02 16:05:34 +01:00
examples Version 0.4.0 2017-11-04 07:03:53 +01:00
fonts Small NewFont improvements 2017-11-03 20:12:27 +01:00
icon FWidget now inherits directly from FObject 2017-10-27 23:28:37 +02:00
include/final Version 0.4.0 2017-11-04 07:03:53 +01:00
logo FWidget now inherits directly from FObject 2017-10-27 23:28:37 +02:00
m4 The include guard for fconfig.h no longer has an underscore prefix 2017-10-07 21:57:07 +02:00
scripts The command line help text is now available in all applications 2017-09-19 06:18:03 +02:00
src Version 0.4.0 2017-11-04 07:03:53 +01:00
.bettercodehub.yml Better Code Hub config 2017-10-31 17:27:38 +01:00
.codedocs Uncaught exception fix 2017-09-20 06:19:27 +02:00
.gitignore All include files were moved to a separate director 2017-09-17 21:32:46 +02:00
.travis.yml Rename fapp.{cpp,h} to fapplication.{cpp,h} 2017-08-24 00:47:35 +02:00
AUTHORS upload 2015-05-23 13:35:12 +02:00
COPYING Version 0.4.0 2017-11-04 07:03:53 +01:00
ChangeLog Version 0.4.0 2017-11-04 07:03:53 +01:00
LICENSE Version 0.4.0 2017-11-04 07:03:53 +01:00
Makefile.am Move fonts into the root directory 2017-11-02 16:05:34 +01:00
Makefile.in Move fonts into the root directory 2017-11-02 16:05:34 +01:00
README.md Small NewFont improvements 2017-11-03 20:12:27 +01:00
aclocal.m4 Add the opti-move test program 2016-11-26 15:18:44 +01:00
autogen.sh New data type FStringList introduced 2017-09-20 16:56:20 +02:00
build.sh Remap meta key to left alt on FreeBSD console 2017-04-02 13:30:23 +02:00
compile Optimized the terminal clear screen 2016-11-26 18:15:31 +01:00
config.guess Add the opti-move test program 2016-11-26 15:18:44 +01:00
config.h.in config.h.in 2015-09-15 23:07:24 +02:00
config.sub Add the opti-move test program 2016-11-26 15:18:44 +01:00
configure Version 0.4.0 2017-11-04 07:03:53 +01:00
configure.ac Version 0.4.0 2017-11-04 07:03:53 +01:00
depcomp upload 2015-05-23 13:35:12 +02:00
finalcut.spec Version 0.4.0 2017-11-04 07:03:53 +01:00
install-sh Add the opti-move test program 2016-11-26 15:18:44 +01:00
ltmain.sh Add the opti-move test program 2016-11-26 15:18:44 +01:00
missing Add the opti-move test program 2016-11-26 15:18:44 +01:00
stamp-h1 new + delete in the same scope 2017-09-17 21:44:22 +02:00

README.md

The Final Cut

Building and code analysis

Travis CI:
     Build Status
Coverity Scan:
     Coverity Scan Status
Class Reference:
     documented

Installation

> git clone git://github.com/gansm/finalcut.git
> cd finalcut
> ./configure --prefix=/usr
> make
> su -c "make install"

The Final Cut

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 C++ class design was inspired by the Qt framework. It provides common controls like dialog boxes, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on.

newfont

A graphical text font for X11 and the Linux console.

Virtual terminal

It uses a virtual terminal to print the character via an update method on the screen. The virtual windows are an overlying layer to realizing window movements. The update method transmits only the changes to the virtual terminal or the screen.

 print(...)
printf(...)
  │
  │           ╔═════════════════════════[ vterm ]═════════════════════════╗
  │           ║createVTerm()                                              ║
  │           ║                                 ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
  │           ║                                                           ║
  │           ║                                 │ restoreVTerm(x,y,w,h) │ ║
  │           ║                                                           ║
  │           ║                                 └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
  │           ║                                                           ║
  │   ┌───────╨─────[ vwin ]─────────────┐                                ║
  │   │createArea(area)                  │                                ║
  │   │                                  │                                ║
  │   │                                  │                                ║
  └───┼─────────────►     ──────► updateVTerm(area) ────►                 ║
      │                                  │                                ║
      │                           putArea(x,y,area)                       ║
      │                         ────────────────────►                     ║
      │                           getArea(x,y,area)                       ║
      │                        ◄────────────────────                      ║
      │                                  │                                ║
      │                                  │                                ║
      │                  resizeArea(area)│                                ║
      └───────╥──────────────────────────┘                                ║
              ║                                                           ║
              ║                                                           ║
              ║                                                           ║
              ║   │                                          resizeVTerm()║
              ╚═══▼═══════════════════════════════════════════════════════╝
                  │
                  │    putVTerm()
                  └──────────────────► updateTerminalLine(y)
                    updateTerminal()             │
                                                 ▼
                                         ┌───────────────┐
                                         │ output_buffer │
                                         └───────────────┘
                                                 │
                                                 │ flush_out()
                                                 │     +
                                                 │ Fputchar(char)
                                                 │
                                                 ▼
                                         ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
                                         ▌               ▐
                                         ▌    screen     ▐
                                         ▌ ───────────── ▐
                                         ▌ real terminal ▐
                                         ▌               ▐
                                         ▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
                                                ███
                                             ▀▀▀▀▀▀▀▀▀

Class digramm

                                                ┌───────────┐
                                           ┌────┤ FKeyEvent │
                                           │    └───────────┘
                                           │    ┌─────────────┐
                                           ├────┤ FMouseEvent │
                                           │    └─────────────┘
                                           │    ┌─────────────┐
                                           ├────┤ FWheelEvent │
                                           │    └─────────────┘
                                           │    ┌─────────────┐
                                           ├────┤ FFocusEvent │
                                           │    └─────────────┘
                                           │    ┌─────────────┐
                               ┌────────┐  ├────┤ FAccelEvent │
                               │ FEvent │◄─┤    └─────────────┘
                               └───┬────┘  │    ┌──────────────┐
                                   :1      ├────┤ FResizeEvent │
                                   :       │    └──────────────┘
                                   :       │    ┌────────────┐
                                   :       ├────┤ FShowEvent │
                                   :       │    └────────────┘
                                   :       │    ┌────────────┐
                                   :       ├────┤ FHideEvent │
                                   :       │    └────────────┘
                                   :       │    ┌─────────────┐
                                   :       ├────┤ FCloseEvent │
                                   :       │    └─────────────┘
              1┌───────────┐       :       │    ┌─────────────┐
   ┌-----------┤ FOptiMove │       :       └────┤ FTimerEvent │
   :           └───────────┘       :            └─────────────┘
   :          1┌───────────┐       :
   ┌-----------┤ FOptiAttr │       :            ┌──────────────┐
   :           └───────────┘       :       ┌────┤ FApplication │
   :          *┌─────────┐         :       │    └──────────────┘
   :  ┌--------┤ FString │         :       │    ┌─────────┐
   :  :        └─────────┘         :       ├────┤ FButton │
   :  :       *┌────────┐          :       │    └─────────┘
   :  ┌--------┤ FPoint │          :       │    ┌────────┐
   :  :        └────────┘          :       ├────┤ FLabel │
   :  :       *┌───────┐           :       │    └────────┘
   :  ┌--------┤ FRect │           :       │    ┌───────────┐
   :  :        └───────┘           :       ├────┤ FLineEdit │
   :1 :1                           :       │    └───────────┘
 ┌─┴──┴──┐    ┌────────┐           :       │    ┌──────────────┐      ┌──────────────┐
 │ FTerm │◄───┤ FVTerm │◄──┐       :1      ├────┤ FButtonGroup │   ┌──┤ FRadioButton │
 └───────┘    └────────┘   │  ┌────┴────┐  │    └──────────────┘   │  └──────────────┘
                           ├──┤ FWidget │◄─┤    ┌───────────────┐  │  ┌───────────┐
             ┌─────────┐   │  └─────────┘  ├────┤ FToggleButton │◄─┼──┤ FCheckBox │
             │ FObject │◄──┘               │    └───────────────┘  │  └───────────┘
             └─────────┘                   │    ┌──────────────┐   │  ┌─────────┐
                                           ├────┤ FProgressbar │   └──┤ FSwitch │
                                           │    └──────────────┘      └─────────┘
                                           │    ┌────────────┐
                                           ├────┤ 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 ├---┘
                                                          └────────────────┘

Please send bug reports to

https://github.com/gansm/finalcut/issues