FLUID’s interface consists of several interconnected windows and panels that work together to provide a complete visual design environment. This guide covers every component in detail.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/fltk/fltk/llms.txt
Use this file to discover all available pages before exploring further.
Main Application Window
The main window is FLUID’s control center, displaying your project hierarchy and providing access to all major functions.Title Bar
The title bar displays project status:- Project name: Current
.flfile (function_panel.fl) - First asterisk: Project has unsaved changes (press
Ctrl+Sto save) - .cxx: Generated code file extension
- Second asterisk: Code files don’t match project (press
Ctrl+Shift+Cto update)
FLUID supports only one open project at a time. To work on multiple projects, launch multiple FLUID instances.
Menu Bar
The menu bar provides access to all FLUID functionality:File Menu
- New (
Ctrl+N) - Close current project and start fresh - Open… (
Ctrl+O) - Load existing.flfile - Insert… (
Ctrl+I) - Merge another.flfile into current project - Save (
Ctrl+S) - Save current project - Save As… (
Ctrl+Shift+S) - Save with new filename - Save A Copy… - Save copy without changing current filename
- Revert… - Discard changes since last save
- New From Template… - Create project from saved template
- Save As Template… - Save current project as template
- Print… (
Ctrl+P) - Print all open windows - Write Code (
Ctrl+Shift+C) - Generate.hand.cxxfiles - Write Strings (
Ctrl+Shift+W) - Generate internationalization files - Quit (
Ctrl+Q) - Exit FLUID
Edit Menu
- Undo (
Ctrl+Z) / Redo (Ctrl+Shift+Z) - Undo/redo changes - Cut (
Ctrl+X) - Remove selected widgets to clipboard - Copy (
Ctrl+C) - Copy selected widgets to clipboard - Paste (
Ctrl+V) - Paste widgets from clipboard - Duplicate (
Ctrl+U) - Duplicate selected widgets - Delete - Remove selected widgets permanently
- Select All (
Ctrl+A) - Select all widgets in current group - Properties… (
F1) - Open widget properties panel - Sort - Sort widgets by position (top-left to bottom-right)
- Earlier (
F2) - Move widget earlier in hierarchy - Later (
F3) - Move widget later in hierarchy - Group (
F7) - Create group containing selected widgets - Ungroup (
F8) - Extract widgets from group - Show/Hide Overlays (
Ctrl+Shift+O) - Toggle selection overlays - Show/Hide Guides (
Ctrl+Shift+G) - Toggle alignment guides - Show/Hide Restricted (
Ctrl+Shift+R) - Show overlap warnings - Show/Hide Widget Bin (
Alt+B) - Toggle widget palette - Show/Hide Code View (
Alt+C) - Toggle code preview window - Settings… (
Alt+P) - Open settings dialog
New Menu
Create new elements (also available as right-click menu in layout windows): Code Elements:- Function - C++ function that creates widgets
- Code - Single line of C++ code
- Code Block - Multi-line C++ code block
- Declaration - Variable or include declaration
- Class - C++ class definition
- Widget Class - Custom widget class
- Comment - Documentation comment
- Data - Embedded binary data
- Window - Top-level window
- Group - Generic container
- Pack - Automatic layout group
- Flex - Flexible box layout
- Tabs - Tabbed interface
- Scroll - Scrollable area
- Tile - Resizable tiles
- Wizard - Multi-page wizard
- Grid - Grid layout
- Table - Table widget
- Terminal - Terminal emulator
- Button - Standard push button
- Return Button - Default button (responds to Enter)
- Light Button - Toggle with indicator
- Check Button - Checkbox
- Round Button - Radio button
- Repeat Button - Repeats while held
- Slider - Linear slider
- Scrollbar - Scrollbar control
- Value Slider - Slider with value display
- Value Input - Numeric input with arrows
- Value Output - Read-only numeric display
- Adjuster - Fine adjustment control
- Counter - Value with increment buttons
- Dial - Rotary dial
- Roller - Mouse-drag value control
- Spinner - Text input with up/down arrows
- Input - Single-line text input
- Output - Read-only text display
- Text Display - Multi-line text viewer
- Text Editor - Multi-line text editor
- File Input - Filename input with browser
- Simple Terminal - Simple terminal widget
- Menu Bar - Application menu bar
- Menu Button - Pop-up menu button
- Choice - Drop-down choice menu
- Input Choice - Combo box (editable choice)
- Menu Item - Item within a menu
- Submenu - Hierarchical submenu
- Checkbox Menu Item - Toggleable menu item
- Radio Menu Item - Exclusive menu choice
- Browser - List browser
- Check Browser - List with checkboxes
- File Browser - File system browser
- Tree - Hierarchical tree view
- Help View - HTML help viewer
- Box - Static text or image
- Clock - Analog or digital clock
- Progress - Progress bar
Layout Menu
Arrange and align widgets: Align:- Left - Align left edges
- Center - Center horizontally
- Right - Align right edges
- Top - Align top edges
- Middle - Center vertically
- Bottom - Align bottom edges
- Across - Distribute horizontally
- Down - Distribute vertically
- Width - Match width of first selected
- Height - Match height of first selected
- Both - Match both dimensions
- Horizontal - Center horizontally in parent
- Vertical - Center vertically in parent
- Both - Center in both directions
- Synchronized Resize - Toggle live resize preview
- Grid and Size Settings… (
Ctrl+G) - Configure layout guides
Shell Menu
Execute custom shell commands:- Customize… (
Alt+X) - Configure shell commands - User-defined commands - Appears after configuration
Help Menu
- About FLUID - Version information
Widget Browser
The widget browser displays your project as a hierarchical tree:Tree Structure Elements
Indentation: Shows hierarchy depth Triangle icon:- White: No children
- Black pointing right: Children hidden (click to expand)
- Black pointing down: Children visible (click to collapse)
- Gray: Regular widgets
- Blue title bar: Windows
- Green: Functional nodes (code, functions, classes)
- Padlock corner: Private or static element
- Comment (green): If set, shows above name
- Type name (bold black): Widget class (e.g.,
Fl_Button) - Label (red): Widget’s label text
- Variable name (black): C++ variable name if set
Browser Interaction
Selection:- Single click: Select one widget
- Shift+Click: Toggle widget selection
- Drag: Select multiple widgets
- Click empty area: Deselect all
- Double-click: Open properties panel
- F1: Open properties for selected widget(s)
- F2: Move selected earlier in order
- F3: Move selected later in order
- Drag and drop: Not supported (use Cut/Paste instead)
- F7: Group selected widgets
- F8: Ungroup selected widgets
- Ctrl+X/C/V: Cut, copy, paste
Layout Editor Window
Layout editors appear when you create or open windows. They show the actual visual design:Visual Elements
Widget display: Shows widgets as they will appear at runtime Selection overlays (red boxes):- Highlight selected widgets
- Corner and edge handles for resizing
- Toggle with
Ctrl+Shift+O
- Show margins, gaps, and grid
- Help align widgets consistently
- Toggle with
Ctrl+Shift+G - Configure in Layout > Grid Settings
- Highlight overlapping widgets
- Indicate undefined behavior regions
- Toggle with
Ctrl+Shift+R
Selection and Editing
Select widgets:- Click widget to select
- Shift+Click to toggle selection
- Drag rectangle to select multiple
- Click empty area to deselect all
- Drag selected widgets to new position
- Widgets snap to guides if enabled
- Hold Shift while dragging to disable snapping
- Drag corner handles to resize proportionally
- Drag edge handles to resize one dimension
- Snap works on edges and corners
- Same as New menu
- Context-appropriate widget creation
Layout Tools
Use Layout menu to arrange widgets:- Select multiple widgets
- Choose alignment option
- Widgets adjust to match first selected widget
Widget Properties Panel
Double-click any widget to open its properties panel. The panel has multiple tabs:GUI Tab
Visual properties:- Label: Text displayed on widget
- Image: Image file to display
- Inactive: Grayed-out version of image
- Alignment: Label position (left, center, right, etc.)
- Position: X, Y coordinates
- Size: Width, height
- Values: Widget-specific values (e.g., button state, slider range)
- Shortcut: Keyboard shortcut
- Attributes: Hide, deactivate, resizable, hotspot
Style Tab
Appearance customization:- Label Font: Font family
- Label Size: Font point size
- Label Color: Text color
- Box: Background box style
- Down Box: Pressed state appearance (buttons)
- Color: Background color
- Select Color: Selection/active color
C++ Tab
Code generation settings:- Name: C++ variable name
- Class: Widget class (can override default)
- Type: Widget type variant
- Callback: Callback function or inline code
- User Data: Data passed to callback
- User Data Type: Type of user data
- When: When callback fires (changed, released, etc.)
- Access: Public, private, protected
- Extra Code: Additional initialization code
Grid Tab (Fl_Grid only)
Grid-specific properties:- Rows/Columns: Grid dimensions
- Margins: Space around grid edges
- Gaps: Space between cells
- Row/Column Properties: Height, weight, gap per row/column
Grid Cell Tab (Children of Fl_Grid)
Cell positioning:- Location: Row and column position
- Span: Rows and columns to span
- Alignment: Widget alignment within cell
- Minimum Size: Minimum cell dimensions
Widget Bin Panel
The Widget Bin provides quick access to all widget types (Edit > Show Widget Bin orAlt+B):
Using the Widget Bin:
- Click widget type to add at default location
- Drag widget from bin to precise position in layout
- Organized by category: Groups, Buttons, Valuators, Text, Menus, Browsers, Other
Code View Panel
The Code View shows generated C++ code in real-time (Edit > Show Code View orAlt+C):
Features
Tabs:- Source: Generated
.cxxfile contents - Header: Generated
.hfile contents
Settings Dialog
Access comprehensive settings via Edit > Settings (Alt+P):
General Tab
Application-wide preferences:- Use macOS Command key: Use Cmd instead of Ctrl on macOS
- Allow UTF-8 in source: Include UTF-8 directly vs escape sequences
- Avoid early includes: Delay
#include <FL/Fl.H>in generated code
Project Tab
Current project settings:- Header filename: Generated
.hfile name or extension - Code filename: Generated
.cxxfile name or extension - Include header from code: Add
#include "header.h"to code file
Layout Tab
Alignment and grid configuration:- Layout suites: FLTK, Grid, or custom layouts
- Presets: Main window, dialog box, toolbox
- Margins: Space from parent edges
- Gaps: Space between widgets
- Grid: Grid line spacing
Shell Tab
Custom shell commands:- Add commands: Create build scripts
- Assign shortcuts: Quick access keys
- Set conditions: When command is available
- Configure flags: Run in terminal, save before running, etc.
i18n Tab
Internationalization:- Type: None, GNU gettext, or POSIX catgets
- Function names: Translation function names
- Include files: Headers for i18n functions
- File/Set names: Output file configuration
User Tab
Customize FLUID appearance:- Browser colors: Tree view color scheme
- Font styles: Bold, italic for different elements
- Icon sizes: Widget browser icon dimensions
Window Management
Closing windows:- Closing layout window doesn’t delete it
- Windows persist in project and can be reopened
- Delete window via widget browser or Edit menu
- Double-click window in browser
- Or select and press F1
- Window appears at saved position
- Projects can have many windows
- All can be open simultaneously
- Each has independent layout editor
Keyboard Shortcuts Reference
File Operations
File Operations
Ctrl+N- New projectCtrl+O- Open projectCtrl+S- Save projectCtrl+Shift+S- Save asCtrl+Shift+C- Write codeCtrl+P- PrintCtrl+Q- Quit
Editing
Editing
Ctrl+Z- UndoCtrl+Shift+Z- RedoCtrl+X- CutCtrl+C- CopyCtrl+V- PasteCtrl+U- DuplicateCtrl+A- Select allDelete- Delete selected
Widget Operations
Widget Operations
F1- PropertiesF2- EarlierF3- LaterF7- GroupF8- Ungroup
View Options
View Options
Alt+B- Toggle Widget BinAlt+C- Toggle Code ViewAlt+P- SettingsCtrl+Shift+O- Toggle overlaysCtrl+Shift+G- Toggle guidesCtrl+Shift+R- Toggle restricted areasCtrl+G- Grid settings
Tips and Tricks
Fast widget creation: Use Widget Bin drag-and-drop for precise placement Batch editing: Select multiple widgets, then change properties - affects all selected Template hierarchy: Create one widget, set all properties, then duplicate Live preview: Keep Code View open to learn FLUID’s code generation Keyboard navigation: Learn F-key shortcuts for 10× faster workflow Grid presets: Switch between FLTK and Grid layouts to see different alignment approaches Sort after layout: Always sort widgets (Edit > Sort) before finalizing to fix tab order
File Format Reference
Deep dive into the .fl file format specification