summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2023-07-12 15:27:36 +0200
committerMatthias Melcher <github@matthiasm.com>2023-07-12 15:27:52 +0200
commit11dc28c32169ac5c785b70d9f4fe97077c8b7ba8 (patch)
treeb2105603255842fa942b379a745980bb0f6c0b50
parent9826b345ac3f6dd138d94b71cacd332c3a3ce2af (diff)
FLUDI documentation updates
-rw-r--r--fluid/Fd_Snap_Action.cxx218
-rw-r--r--fluid/Fd_Snap_Action.h68
-rw-r--r--fluid/Fl_Function_Type.cxx7
3 files changed, 268 insertions, 25 deletions
diff --git a/fluid/Fd_Snap_Action.cxx b/fluid/Fd_Snap_Action.cxx
index 7a4338ec6..4c9be9b2b 100644
--- a/fluid/Fd_Snap_Action.cxx
+++ b/fluid/Fd_Snap_Action.cxx
@@ -145,6 +145,9 @@ void edit_layout_preset_cb(Fl_Button *w, long user_data) {
// ---- Fd_Layout_Suite ------------------------------------------------ MARK: -
+/**
+ Write presets to a Preferences database.
+ */
void Fd_Layout_Preset::write(Fl_Preferences &prefs) {
assert(this);
Fl_Preferences p_win(prefs, "Window");
@@ -182,6 +185,9 @@ void Fd_Layout_Preset::write(Fl_Preferences &prefs) {
p_lyt.set("textsize", textsize);
}
+/**
+ Read presets from a Preferences database.
+ */
void Fd_Layout_Preset::read(Fl_Preferences &prefs) {
assert(this);
Fl_Preferences p_win(prefs, "Window");
@@ -219,6 +225,9 @@ void Fd_Layout_Preset::read(Fl_Preferences &prefs) {
p_lyt.get("textsize", textsize, 14);
}
+/**
+ Write presets to an .fl project file.
+ */
void Fd_Layout_Preset::write(Fd_Project_Writer *out) {
out->write_string(" preset { 1\n"); // preset format version
out->write_string(" %d %d %d %d %d %d\n",
@@ -238,6 +247,9 @@ void Fd_Layout_Preset::write(Fd_Project_Writer *out) {
out->write_string(" }\n"); // preset format version
}
+/**
+ Read presets from an .fl project file.
+ */
void Fd_Layout_Preset::read(Fd_Project_Reader *in) {
const char *key;
key = in->read_word(1);
@@ -294,6 +306,9 @@ void Fd_Layout_Preset::read(Fd_Project_Reader *in) {
// ---- Fd_Layout_Suite ------------------------------------------------ MARK: -
+/**
+ Write a presets suite to a Preferences database.
+ */
void Fd_Layout_Suite::write(Fl_Preferences &prefs) {
assert(this);
assert(name_);
@@ -305,6 +320,9 @@ void Fd_Layout_Suite::write(Fl_Preferences &prefs) {
}
}
+/**
+ Read a presets suite from a Preferences database.
+ */
void Fd_Layout_Suite::read(Fl_Preferences &prefs) {
assert(this);
for (int i = 0; i < 3; ++i) {
@@ -314,6 +332,9 @@ void Fd_Layout_Suite::read(Fl_Preferences &prefs) {
}
}
+/**
+ Write a presets suite to an .fl project file.
+ */
void Fd_Layout_Suite::write(Fd_Project_Writer *out) {
out->write_string(" suite {\n");
out->write_string(" name "); out->write_word(name_); out->write_string("\n");
@@ -323,6 +344,9 @@ void Fd_Layout_Suite::write(Fd_Project_Writer *out) {
out->write_string(" }\n");
}
+/**
+ Read a presets suite from an .fl project file.
+ */
void Fd_Layout_Suite::read(Fd_Project_Reader *in) {
const char *key;
key = in->read_word(1);
@@ -347,6 +371,10 @@ void Fd_Layout_Suite::read(Fd_Project_Reader *in) {
}
}
+/**
+ \brief Update the menu_label to show a symbol representing the storage location.
+ Also updates the FLUID user interface.
+ */
void Fd_Layout_Suite::update_label() {
Fl_String sym;
switch (storage_) {
@@ -362,6 +390,10 @@ void Fd_Layout_Suite::update_label() {
g_layout_list.update_menu_labels();
}
+/**
+ \brief Update the Suite name and the Suite menu_label.
+ Also updates the FLUID user interface.
+ */
void Fd_Layout_Suite::name(const char *n) {
if (name_)
::free(name_);
@@ -372,6 +404,9 @@ void Fd_Layout_Suite::name(const char *n) {
update_label();
}
+/**
+ Initialise the class for first use.
+ */
void Fd_Layout_Suite::init() {
name_ = NULL;
menu_label = NULL;
@@ -379,6 +414,9 @@ void Fd_Layout_Suite::init() {
storage_ = 0;
}
+/**
+ Free all allocated resources.
+ */
Fd_Layout_Suite::~Fd_Layout_Suite() {
if (storage_ == FD_STORE_INTERNAL) return;
if (name_) ::free(name_);
@@ -389,6 +427,9 @@ Fd_Layout_Suite::~Fd_Layout_Suite() {
// ---- Fd_Layout_List ------------------------------------------------- MARK: -
+/**
+ Draw a little FLUID beaker symbol.
+ */
static void fd_beaker(Fl_Color c) {
fl_color(221);
fl_begin_polygon();
@@ -414,6 +455,9 @@ static void fd_beaker(Fl_Color c) {
fl_end_line();
}
+/**
+ Draw a user silhouette symbol
+ */
static void fd_user(Fl_Color c) {
fl_color(245);
fl_begin_complex_polygon();
@@ -429,6 +473,9 @@ static void fd_user(Fl_Color c) {
fl_end_line();
}
+/**
+ Draw a document symbol.
+ */
static void fd_project(Fl_Color c) {
Fl_Color fc = FL_LIGHT2;
fl_color(fc);
@@ -464,6 +511,9 @@ static void fd_project(Fl_Color c) {
fl_end_line();
}
+/**
+ Draw a 3 1/2" floppy symbol.
+ */
void fd_file(Fl_Color c) {
Fl_Color fl = FL_LIGHT2;
Fl_Color fc = FL_DARK3;
@@ -515,7 +565,9 @@ void fd_file(Fl_Color c) {
fl_end_loop();
}
-
+/**
+ Instantiate the class that holds a list of all layouts and manages the UI.
+ */
Fd_Layout_List::Fd_Layout_List()
: main_menu_(main_layout_submenu_),
choice_menu_(static_choice_menu),
@@ -533,6 +585,9 @@ Fd_Layout_List::Fd_Layout_List()
fl_add_symbol("fd_file", fd_file, 1);
}
+/**
+ Release allocated resources.
+ */
Fd_Layout_List::~Fd_Layout_List() {
assert(this);
if (!list_is_static_) {
@@ -548,6 +603,9 @@ Fd_Layout_List::~Fd_Layout_List() {
if (filename_) ::free(filename_);
}
+/**
+ Update the Setting dialog and menus to reflect the current Layout selection state.
+ */
void Fd_Layout_List::update_dialogs() {
static Fl_Menu_Item *preset_menu = NULL;
if (!preset_menu) {
@@ -569,6 +627,9 @@ void Fd_Layout_List::update_dialogs() {
main_menu_[current_suite_].setonly(main_menu_);
}
+/**
+ Refresh the label pointers for both pulldown menus.
+ */
void Fd_Layout_List::update_menu_labels() {
for (int i=0; i<list_size_; i++) {
main_menu_[i].label(list_[i].menu_label);
@@ -576,6 +637,9 @@ void Fd_Layout_List::update_menu_labels() {
}
}
+/**
+ Load all user layouts from the FLUID user preferences.
+ */
int Fd_Layout_List::load(const char *filename) {
remove_all(FD_STORE_FILE);
Fl_Preferences prefs(filename, "layout.fluid.fltk.org", NULL);
@@ -583,6 +647,9 @@ int Fd_Layout_List::load(const char *filename) {
return 0;
}
+/**
+ Save all user layouts to the FLUID user preferences.
+ */
int Fd_Layout_List::save(const char *filename) {
assert(this);
assert(filename);
@@ -592,6 +659,9 @@ int Fd_Layout_List::save(const char *filename) {
return 0;
}
+/**
+ Write Suite and Layout selection and selected layout data to Preferences database.
+ */
void Fd_Layout_List::write(Fl_Preferences &prefs, int storage) {
Fl_Preferences prefs_list(prefs, "Layouts");
prefs_list.clear();
@@ -607,6 +677,9 @@ void Fd_Layout_List::write(Fl_Preferences &prefs, int storage) {
}
}
+/**
+ Read Suite and Layout selection and selected layout data to Preferences database.
+ */
void Fd_Layout_List::read(Fl_Preferences &prefs, int storage) {
Fl_Preferences prefs_list(prefs, "Layouts");
Fl_String cs;
@@ -629,6 +702,9 @@ void Fd_Layout_List::read(Fl_Preferences &prefs, int storage) {
update_dialogs();
}
+/**
+ Write Suite and Layout selection and project layout data to an .fl project file.
+ */
void Fd_Layout_List::write(Fd_Project_Writer *out) {
out->write_string("\nsnap {\n ver 1\n");
out->write_string(" current_suite "); out->write_word(list_[current_suite()].name_); out->write_string("\n");
@@ -641,6 +717,9 @@ void Fd_Layout_List::write(Fd_Project_Writer *out) {
out->write_string("}");
}
+/**
+ Read Suite and Layout selection and project layout data from an .fl project file.
+ */
void Fd_Layout_List::read(Fd_Project_Reader *in) {
const char *key;
key = in->read_word(1);
@@ -674,6 +753,10 @@ void Fd_Layout_List::read(Fd_Project_Reader *in) {
}
}
+/**
+ Set the current Suite.
+ \param[in] ix index into list of suites
+ */
void Fd_Layout_List::current_suite(int ix) {
assert(ix >= 0);
assert(ix < list_size_);
@@ -681,6 +764,11 @@ void Fd_Layout_List::current_suite(int ix) {
layout = list_[current_suite_].layout[current_preset_];
}
+/**
+ Set the current Suite.
+ \param[in] arg_name name of the selected suite
+ \return if no name is given or the name is not found, keep the current suite selected
+ */
void Fd_Layout_List::current_suite(Fl_String arg_name) {
if (arg_name.empty()) return;
for (int i = 0; i < list_size_; ++i) {
@@ -692,6 +780,10 @@ void Fd_Layout_List::current_suite(Fl_String arg_name) {
}
}
+/**
+ Select a Preset within the current Suite.
+ \param[in] ix 0 = application, 1 = dialog, 2 = toolbox
+ */
void Fd_Layout_List::current_preset(int ix) {
assert(ix >= 0);
assert(ix < 3);
@@ -735,7 +827,7 @@ void Fd_Layout_List::capacity(int n) {
}
/**
- Clone the currently selected suite and append it to the list.
+ \brief Clone the currently selected suite and append it to the list.
Selectes the new layout and updates the UI.
*/
int Fd_Layout_List::add(const char *name) {
@@ -765,6 +857,9 @@ int Fd_Layout_List::add(const char *name) {
return n;
}
+/**
+ Rename the current Suite.
+ */
void Fd_Layout_List::rename(const char *name) {
int n = current_suite();
list_[n].name(name);
@@ -772,6 +867,10 @@ void Fd_Layout_List::rename(const char *name) {
choice_menu_[n].label(list_[n].menu_label);
}
+/**
+ Remove the given suite.
+ \param[in] ix index into list of suites
+ */
void Fd_Layout_List::remove(int ix) {
int tail = list_size_-ix-1;
if (tail) {
@@ -785,6 +884,10 @@ void Fd_Layout_List::remove(int ix) {
current_suite(list_size_ - 1);
}
+/**
+ Remove all Suites that use the given storage attribute.
+ \param[in] storage storage attribute, see FD_STORE_INTERNAL, etc.
+ */
void Fd_Layout_List::remove_all(int storage) {
for (int i=list_size_-1; i>=0; --i) {
if (list_[i].storage_ == storage)
@@ -830,8 +933,30 @@ static Fl_Group *parent(Fd_Snap_Data &d) {
// ---- Fd_Snap_Action ------------------------------------------------- MARK: -
/** \class Fd_Snap_Action
+
+ When a user drags one or more widgets, snap actions can be defined that provide
+ hints if a preferred widget position or size is nearby. The user's motion is
+ then directed towards the nearest preferred position, and the widget selection
+ snaps into place.
+
+ FLUID provides a list of various snap actions. Every snap action uses the data
+ from the motion event and combines it with the sizes and positions of all other
+ widgets in the layout.
+
+ Common snap actions include gaps and margins, but also alignments and
+ simple grid positions.
*/
+/**
+ \brief Check if a snap action has reached a preferred x position.
+ \param[inout] d current event data
+ \param[in] x_ref position of moving point
+ \param[in] x_snap position of target point
+ \return 1 if the points are not within range and won;t be considered
+ \return 0 if the point is as close as another in a prevoius action
+ \return -1 if this point is closer than any previous check, and this is the
+ new distance to beat.
+ */
int Fd_Snap_Action::check_x_(Fd_Snap_Data &d, int x_ref, int x_snap) {
int dd = x_ref + d.dx - x_snap;
int d2 = abs(dd);
@@ -843,6 +968,10 @@ int Fd_Snap_Action::check_x_(Fd_Snap_Data &d, int x_ref, int x_snap) {
return -1;
}
+/**
+ \brief Check if a snap action has reached a preferred y position.
+ \see Fd_Snap_Action::check_x_(Fd_Snap_Data &d, int x_ref, int x_snap)
+ */
int Fd_Snap_Action::check_y_(Fd_Snap_Data &d, int y_ref, int y_snap) {
int dd = y_ref + d.dy - y_snap;
int d2 = abs(dd);
@@ -854,6 +983,10 @@ int Fd_Snap_Action::check_y_(Fd_Snap_Data &d, int y_ref, int y_snap) {
return -1;
}
+/**
+ \brief Check if a snap action has reached a preferred x and y position.
+ \see Fd_Snap_Action::check_x_(Fd_Snap_Data &d, int x_ref, int x_snap)
+ */
void Fd_Snap_Action::check_x_y_(Fd_Snap_Data &d, int x_ref, int x_snap, int y_ref, int y_snap) {
int ddx = x_ref + d.dx - x_snap;
int d2x = abs(ddx);
@@ -869,6 +1002,12 @@ void Fd_Snap_Action::check_x_y_(Fd_Snap_Data &d, int x_ref, int x_snap, int y_re
}
}
+/**
+ \brief Check if a snap action was applied to the current event.
+ This method is used to determine if a visual indicator for this snap action
+ should be drawn.
+ \param[inout] d current event data
+ */
bool Fd_Snap_Action::matches(Fd_Snap_Data &d) {
switch (type) {
case 1: return (d.drag & mask) && (eex == ex) && (d.dx == dx);
@@ -878,6 +1017,10 @@ bool Fd_Snap_Action::matches(Fd_Snap_Data &d) {
return false;
}
+/**
+ \brief Run through all possible snap actions and store the winning coordinates in eex and eey.
+ \param[inout] d current event data
+ */
void Fd_Snap_Action::check_all(Fd_Snap_Data &data) {
for (int i=0; list[i]; i++) {
if (list[i]->mask & data.drag)
@@ -887,6 +1030,13 @@ void Fd_Snap_Action::check_all(Fd_Snap_Data &data) {
eey = data.ey_out;
}
+/**
+ \brief Draw a visual indicator for all sanp actions that were applied during the last check.
+ Only one snap coordinate can win. FLUID chooses the one that is closest to
+ the current user event. If two or more snap actions suggest the same
+ coordinate, all of them will be drawn.
+ \param[inout] d current event data
+ */
void Fd_Snap_Action::draw_all(Fd_Snap_Data &data) {
for (int i=0; list[i]; i++) {
if (list[i]->matches(data))
@@ -924,21 +1074,33 @@ void Fd_Snap_Action::get_move_stepsize(int &x_step, int &y_step) {
// ---- snapping prototypes -------------------------------------------- MARK: -
+/**
+ Base class for all actions that drag the left side or the entire widget.
+ */
class Fd_Snap_Left : public Fd_Snap_Action {
public:
Fd_Snap_Left() { type = 1; mask = FD_LEFT|FD_DRAG; }
};
+/**
+ Base class for all actions that drag the right side or the entire widget.
+ */
class Fd_Snap_Right : public Fd_Snap_Action {
public:
Fd_Snap_Right() { type = 1; mask = FD_RIGHT|FD_DRAG; }
};
+/**
+ Base class for all actions that drag the top side or the entire widget.
+ */
class Fd_Snap_Top : public Fd_Snap_Action {
public:
Fd_Snap_Top() { type = 2; mask = FD_TOP|FD_DRAG; }
};
+/**
+ Base class for all actions that drag the bottom side or the entire widget.
+ */
class Fd_Snap_Bottom : public Fd_Snap_Action {
public:
Fd_Snap_Bottom() { type = 2; mask = FD_BOTTOM|FD_DRAG; }
@@ -946,6 +1108,9 @@ public:
// ---- window snapping ------------------------------------------------ MARK: -
+/**
+ Check if the widget hits the left window edge.
+ */
class Fd_Snap_Left_Window_Edge : public Fd_Snap_Left {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE { clr(); check_x_(d, d.bx, 0); }
@@ -953,6 +1118,9 @@ public:
};
Fd_Snap_Left_Window_Edge snap_left_window_edge;
+/**
+ Check if the widget hits the right window edge.
+ */
class Fd_Snap_Right_Window_Edge : public Fd_Snap_Right {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE { clr(); check_x_(d, d.br, d.win->o->w()); }
@@ -960,6 +1128,9 @@ public:
};
Fd_Snap_Right_Window_Edge snap_right_window_edge;
+/**
+ Check if the widget hits the top window edge.
+ */
class Fd_Snap_Top_Window_Edge : public Fd_Snap_Top {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE { clr(); check_y_(d, d.by, 0); }
@@ -967,6 +1138,9 @@ public:
};
Fd_Snap_Top_Window_Edge snap_top_window_edge;
+/**
+ Check if the widget hits the bottom window edge.
+ */
class Fd_Snap_Bottom_Window_Edge : public Fd_Snap_Bottom {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE { clr(); check_y_(d, d.bt, d.win->o->h()); }
@@ -974,6 +1148,9 @@ public:
};
Fd_Snap_Bottom_Window_Edge snap_bottom_window_edge;
+/**
+ Check if the widget hits the left window edge plus a user defined margin.
+ */
class Fd_Snap_Left_Window_Margin : public Fd_Snap_Left {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE {
@@ -1024,6 +1201,9 @@ Fd_Snap_Bottom_Window_Margin snap_bottom_window_margin;
// ---- group snapping ------------------------------------------------- MARK: -
+/**
+ Check if the widget hits the left group edge.
+ */
class Fd_Snap_Left_Group_Edge : public Fd_Snap_Left {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE {
@@ -1073,6 +1253,9 @@ public:
Fd_Snap_Bottom_Group_Edge snap_bottom_group_edge;
+/**
+ Check if the widget hits the left group edge plus a user defined margin.
+ */
class Fd_Snap_Left_Group_Margin : public Fd_Snap_Left {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE {
@@ -1127,6 +1310,9 @@ Fd_Snap_Bottom_Group_Margin snap_bottom_group_margin;
// ----- tabs snapping ------------------------------------------------- MARK: -
+/**
+ Check if the widget top hits the Fl_Tabs group top edge plus a user defined margin.
+ */
class Fd_Snap_Top_Tabs_Margin : public Fd_Snap_Top_Group_Margin {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE {
@@ -1147,6 +1333,9 @@ Fd_Snap_Bottom_Tabs_Margin snap_bottom_tabs_margin;
// ----- grid snapping ------------------------------------------------- MARK: -
+/**
+ Base class for grid based snapping.
+ */
class Fd_Snap_Grid : public Fd_Snap_Action {
protected:
int nearest_x, nearest_y;
@@ -1172,6 +1361,9 @@ public:
}
};
+/**
+ Check if the widget hits window grid coordinates.
+ */
class Fd_Snap_Window_Grid : public Fd_Snap_Grid {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE {
@@ -1185,6 +1377,9 @@ public:
};
Fd_Snap_Window_Grid snap_window_grid;
+/**
+ Check if the widget hits group grid coordinates.
+ */
class Fd_Snap_Group_Grid : public Fd_Snap_Grid {
public:
void check(Fd_Snap_Data &d) FL_OVERRIDE {
@@ -1203,6 +1398,9 @@ Fd_Snap_Group_Grid snap_group_grid;
// ----- sibling snapping ---------------------------------------------- MARK: -
+/**
+ Base class the check distance to other widgets in the same group.
+ */
class Fd_Snap_Sibling : public Fd_Snap_Action {
protected:
Fl_Widget *best_match;
@@ -1237,6 +1435,9 @@ public:
}
};
+/**
+ Check if widgets have the same x coordinate, so they can be vertically aligned.
+ */
class Fd_Snap_Siblings_Left_Same : public Fd_Snap_Sibling {
public:
Fd_Snap_Siblings_Left_Same() { type = 1; mask = FD_LEFT|FD_DRAG; }
@@ -1249,6 +1450,9 @@ public:
};
Fd_Snap_Siblings_Left_Same snap_siblings_left_same;
+/**
+ Check if widgets touch left to right, or have a user selected gap left to right.
+ */
class Fd_Snap_Siblings_Left : public Fd_Snap_Sibling {
public:
Fd_Snap_Siblings_Left() { type = 1; mask = FD_LEFT|FD_DRAG; }
@@ -1340,6 +1544,9 @@ Fd_Snap_Siblings_Bottom snap_siblings_bottom;
// ------ widget snapping ---------------------------------------------- MARK: -
+/**
+ Snap horizontal resizing to min_w or min_w and a multiple of inc_w.
+ */
class Fd_Snap_Widget_Ideal_Width : public Fd_Snap_Action {
public:
Fd_Snap_Widget_Ideal_Width() { type = 1; mask = FD_LEFT|FD_RIGHT; }
@@ -1394,6 +1601,13 @@ Fd_Snap_Widget_Ideal_Height snap_widget_ideal_height;
// ---- snap actions list ---------------------------------------------- MARK: -
+/**
+ /brief The list of all snap actions availabel to FLUID.
+ New snap actions can be appended to the list. If multiple snap actions
+ with different corrdinates, but the same sanp distance are found, the last
+ action in the list wins. All snap actions with the same distance and same
+ winning coordinates are drawn in the overlay plane.
+ */
Fd_Snap_Action *Fd_Snap_Action::list[] = {
&snap_left_window_edge,
&snap_right_window_edge,
diff --git a/fluid/Fd_Snap_Action.h b/fluid/Fd_Snap_Action.h
index 201ed497d..7ceec2731 100644
--- a/fluid/Fd_Snap_Action.h
+++ b/fluid/Fd_Snap_Action.h
@@ -23,43 +23,54 @@ struct Fl_Menu_Item;
extern Fl_Menu_Item main_layout_submenu_[];
+/**
+ Indicate the storage location for a layout suite.
+ */
enum {
- FD_STORE_INTERNAL,
- FD_STORE_USER,
- FD_STORE_PROJECT,
- FD_STORE_FILE
+ FD_STORE_INTERNAL, ///< stored inside FLUID app
+ FD_STORE_USER, ///< suite is stored in the user wide FLUID settings
+ FD_STORE_PROJECT, ///< suite is stored within the current .fl project file
+ FD_STORE_FILE ///< store suite in external file
};
+/**
+ \brief Collection of layout settings.
+
+ Presets contain default fonts and font sizes for labels and text. They
+ can be used to guide widget positions usung margins, grids, and gap sizes.
+ There are three Presets available in one Suite, marked "application",
+ "dialog", and "toolbox".
+ */
class Fd_Layout_Preset {
public:
- int left_window_margin;
+ int left_window_margin; ///< gap between the window border and the widget
int right_window_margin;
int top_window_margin;
int bottom_window_margin;
- int window_grid_x;
+ int window_grid_x; ///< a regular grid across the window with its origin in the top left window corner
int window_grid_y;
- int left_group_margin;
+ int left_group_margin; ///< gap between the border of a widget and its parent group
int right_group_margin;
int top_group_margin;
int bottom_group_margin;
- int group_grid_x;
+ int group_grid_x; ///< a regular grid across the group with its origin in the top left group corner
int group_grid_y;
- int top_tabs_margin;
- int bottom_tabs_margin;
+ int top_tabs_margin; ///< preferred top edge tab size inside Fl_Tabs
+ int bottom_tabs_margin; ///< preferred bottom edge tab size inside Fl_Tabs
- int widget_min_w;
- int widget_inc_w;
- int widget_gap_x;
+ int widget_min_w; ///< minimum widget width
+ int widget_inc_w; ///< widget width increments starting from widget_min_w
+ int widget_gap_x; ///< preferred horizontal gap between widgets
int widget_min_h;
int widget_inc_h;
int widget_gap_y;
- int labelfont;
- int labelsize;
- int textfont;
- int textsize;
+ int labelfont; ///< preferred font for labels
+ int labelsize; ///< preferred size for labels
+ int textfont; ///< preferred font for text elements
+ int textsize; ///< preferred size for text elements
void write(Fl_Preferences &prefs);
void read(Fl_Preferences &prefs);
@@ -69,12 +80,20 @@ public:
extern Fd_Layout_Preset *layout;
+/**
+ \brief A collection of layout presets.
+
+ A suite of layout presets is designed to cover various use cases when
+ designing UI layouts for applications.
+ There are three Presets available in one Suite, marked "application",
+ "dialog", and "toolbox".
+ */
class Fd_Layout_Suite {
public:
- char *name_;
- char *menu_label;
- Fd_Layout_Preset *layout[3]; // application, dialog, toolbox;
- int storage_;
+ char *name_; ///< name of the suite
+ char *menu_label; ///< label text used in pulldown menu
+ Fd_Layout_Preset *layout[3]; ///< presetes for application, dialog, and toolbox windows
+ int storage_; ///< storage location (see FD_STORE_INTERNAL, etc.)
void write(Fl_Preferences &prefs);
void read(Fl_Preferences &prefs);
void write(Fd_Project_Writer*);
@@ -88,6 +107,13 @@ public:
};
+/**
+ \brief Manage all layout suites that are available to the user.
+
+ FLUID has two built-in suites. More suites can be cloned or added and stored
+ as a user preference, as part of an .fl project file, or in a seperate file
+ for import/export and sharing.
+ */
class Fd_Layout_List {
public:
Fl_Menu_Item *main_menu_;
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx
index 0a96326d5..22ced326b 100644
--- a/fluid/Fl_Function_Type.cxx
+++ b/fluid/Fl_Function_Type.cxx
@@ -34,8 +34,11 @@
Fl_Class_Type *current_class = NULL;
/**
- Return 1 if the list contains a function with the given signature at the top level.
- \param[in] rtype return type
+ \brief Return 1 if the list contains a function with the given signature at the top level.
+ Fl_Widget_Type uses this to check if a callback by a certain signature is
+ already defined by the user within this file. If not, Fl_Widget_Type will
+ generate an `extern $sig$;` statement.
+ \param[in] rtype return type, can be NULL to avoid checking (not used by Fl_Widget_Type)
\param[in] sig function signature
\return 1 if found.
*/