summaryrefslogtreecommitdiff
path: root/fluid/documentation/src-dev/page_introduction.dox
blob: 5684eeeda200c767ac5fd35ef8d606708c0bf6f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/**

 \page page_introduction Introduction

 \tableofcontents

 ## Light User Interface Design ##

 FLUID is the Fast Light User Interface Designer that accompanies the fltk
 user interface library. FLUID relies on panels and dialogs that are generated
 within FLUID. Consequently, developers are required to consistently assess the
 user-friendliness and code integrity of the application.

 This document presumes you are familiar with FLUID, have read the most
 important parts the FLUID User Manual, and have created some user interfaces
 in FLUID already.

 ## History ##

 FLUID is an application that grew over time with fltk. In its original design,
 it was meant to allow users to drag and resize a limited number of widgets
 for small dialog boxes. As the feature set grew over time, new concept and
 designs were introduced by new authors. In its current state, FLUID's source
 code is largely undocumented and difficult to read and understand.

 This should not stop you from diving into the code though. The concepts and
 ideas behind FLUID are great. The software itself is very usable and stable.
 And while digging through the code, any addition to the documentation is
 highly appreciated.

 ## Future ##

 As we approach the imminent release of FLTK 1.4.0, FLUID will no longer undergo 
 significant feature enhancements. Instead, the focus will shift towards
 documentation improvements, addressing bugs, and enhancing usability for
 recent FLTK additions such as Fl_Grid and Fl_Flex. Following the release of
 1.4.0, FLUID will undergo a comprehensive restructuring and modernization,
 streamlining maintenance and simplifying the process of integrating
 support for new widgets.

 ## Quick Glossary ##

 __Project__ : a project is a single design, stored in a project file ending in
    `.fl`. A project contains a bunch of settings and a tree of Types. One
    project can contain multiple UI designs.

 __Code File__, __Header File__ : by default, FLUID generates C++ source code
    that is stored in two files with the same basename as the project. The
    C++ declarations go into the header file ending in `.h`, and the
    implementation is stored in the `.cxx` source code file.

 __Strings File__ : FLUID supports internationalization (in short i18n) of all
    know text elements in a project. The Strings file can be generated as a
    base for adding new languages. The file extension depend on the chosen
    i18ns library.

 __Types__ : a type is a node in a tree that manages a widget or a functional
    node like Class, Function, CodeBlock, etc.

 __Panels__ : in its interactive incarnation, FLUID provides a number of panels
    (dialog boxes) for editing all aspects of Types.

 ## Basic Structure ##

 ...

 ## Wish List ##

 I call this a wish list because I write my wishes down as I go. There is no
 verification yet, or alternative ideas.

 - group source files into subdirectories
    - all panels should have their own folder
    - all custom widgets
    - all file and stream operations
    - all utilities and tools
 - move to C++17 and use std::string, vector, map, ...
 - Fl_Type::write#() could go into a single write function with an enum to
   describe what needs to be written to make thing logical and expandable
 - better error handling in all file classes
 - separate FLUID generated files form the core and build a shell-only version
 - individual event handling for types
 - individual overlay drawing for types
 - plug-ins for new types

 */