rewrite: update default dumb and smart prefixes
[elinks/elinks-j605.git] / src / bfu / README
blob33b21114b47d163e33e5e05d67a296f85fa3a796
1 OVERVIEW OF BFU
2 ===============
4 BFU is the text-mode user interface used by ELinks.  It builds dialogs,
5 widgets and menus on top of the window system implemented at src/terminal/.
7                                                  =====================
8                                                  | struct widget_ops |
9                                                  |   bfu/widget.h    |
10                                                  =====================
11                                                           1^
12                                                            |
13                                                           *|
14  ====================  ======================      =================
15  | struct menu_item |  | struct widget_data | *  1 | struct widget |
16  |    bfu/menu.h    |  |    bfu/widget.h    | ---> |  bfu/widget.h |
17  ====================  ======================      =================
18        +^                     +^                       +^
19         |                      |                        |
20        ?|                     1|                       1|
21  ===============     ======================       =================
22  | struct menu |     | struct dialog_data | *   1 | struct dialog |
23  |  bfu/menu.h |     |    bfu/dialog.h    | ----> |  bfu/dialog.h |
24  ===============     ======================       =================
25   ?^     ?^            ?^          ?|               1|      1|
26    |      |             |           |                |       |
27    |      |             |          1v                |      1v
28    |     1v            1v    ======================  |  ========================
29    |  =====================  | struct memory_list |  |  | struct dialog_layout |
30    |  |   struct window   |  |   util/memlist.h   |  |  |     bfu/dialog.h     |
31    |  | terminal/window.h |  ======================  |  ========================
32    |  =====================                         ?v
33    |               *^                             =========================
34    |                |                             | struct dialog_refresh |
35    |               1v                             |      bfu/dialog.h     |
36    |          =======================             =========================
37    |        ? |   struct terminal   |
38    ---------- | terminal/terminal.h |
39    main_menu  =======================
40                    ?|           ?|
41                     |            |
42                    1v           ?v
43  ==========================  =============================
44  | struct terminal_screen |  | struct terminal_interlink |
45  |   terminal/screen.h    |  |      terminal/event.c     |
46  ==========================  =============================
48                                     Legend:  ---> can be followed like a pointer
49                                                 ? zero or one      1 exactly one
50                                                 * zero or more     + one or more
51                                     There may be errors in the quantifiers.