add some documentation

This commit is contained in:
Boris Faure 2015-07-22 23:16:23 +02:00
parent 25ec6d06cb
commit ee6a319f17
2 changed files with 70 additions and 0 deletions

45
DESIGN.md Normal file
View File

@ -0,0 +1,45 @@
A simple documentation to navige through the C files:
* `src/bin/about.c` handles the About widget
* `src/bin/col.c` is about the colors handled by the terminal
* `src/bin/config.c`: how the configuration is saved/loaded/updated
* `src/bin/controls.c`: the widget when a right-click is done on a terminal
* `src/bin/dbus.c`: all the D-Bus interactions
* `src/bin/extns.c` lists file extensions supported
* `src/bin/gravatar.c` hosts the code to show a Gravatar when hovering an email address
* `src/bin/ipc.c`: various IPC functions
* `src/bin/keyin.c`: handles key input
* `src/bin/main.c` host the main() function: setup/shutdown code
* `src/bin/media.c` handles media interactions like image popups, inlining movies
* `src/bin/miniview.c`: the miniview of the history
* `src/bin/options.c`: the settings widget
* `src/bin/options_behavior.c`: the settings panel that handles the Behaviors
* `src/bin/options_colors.c`: the settings panel about colors in the terminal
* `src/bin/options_elm.c`: the settings panel to configure Elementary
* `src/bin/options_font.c`: the settings panel to choose the Font
* `src/bin/options_helpers.c`: the settings panel on Helpers
* `src/bin/options_keys.c`: the settings panel to configure key bindings
* `src/bin/options_theme.c`: the settings panel to choose a theme
* `src/bin/options_themepv.c`: the widget that handles theme previews
* `src/bin/options_video.c`: the settings panel to configure video rendering
* `src/bin/options_wallpaper.c`: the settings panel to configure a wallpaper
* `src/bin/sel.c`: the tab selector
* `src/bin/termcmd.c` handles custom terminology commands
* `src/bin/termio.c`: the core term widget with the textgrid
* `src/bin/termiolink.c`: link detection in the terminal
* `src/bin/termpty.c`: the PTY interaction
* `src/bin/termptydbl.c`: code to hande double-width characters
* `src/bin/termptyesc.c`: escape codes parsing
* `src/bin/termptyext.c`: extented terminology escape handling
* `src/bin/termptygfx.c`: charset translations
* `src/bin/termptyops.c`: handling history
* `src/bin/termptysave.c`: compression of the backlog
* `src/bin/tyalpha.c`: the `tyalpha` tool
* `src/bin/tybg.c`: the `tybg` tool
* `src/bin/tycat.c`: the `tycat` tool
* `src/bin/tyls.c`: the `tyls` tool
* `src/bin/typop.c`: the `typop` tool
* `src/bin/tyq.c`: the `tyq` tool
* `src/bin/utf8.c`: handles conversion between Eina_Unicode and char *
* `src/bin/utils.c`: small utilitarian functions
* `src/bin/win.c`: handles the windows, splits, tabs

View File

@ -15,6 +15,31 @@
#include "controls.h" #include "controls.h"
#include "term_container.h" #include "term_container.h"
/**
* Design:
* A terminal widget is Term. It hosts various Evas_Object, like a `termio`
* handling the textgrid.
* It is hosted in a Term_Container of type Solo.
* On Term_Container:
* It is a generic structure with a set of function pointers. It is a simple
* way to objectify and have genericity between a Window, a Split or Tabs.
* Solo, Win, Split, Tabs have a Term_Container as their first field and thus
* can be casted to Term_Container to have access to those APIs.
*
* Solo is the simplest container, hosting just a Term.
* Win is a window and has only one container child.
* Split is a widget to separate an area of the screen in 2 and thus has 2
* children that can be either Solo or Tabs.
* Tabs is a Term_Container containing many containers (at the moment, only
* Solo ones) and have a system of tabs.
*
* All the windows are in the `wins` list.
*/
/* specific log domain to help debug only terminal code parser */ /* specific log domain to help debug only terminal code parser */
int _win_log_dom = -1; int _win_log_dom = -1;