← All compilation units

Flyology_TUI.Components.Dock_Workspaces

Description

Appearance

type Appearance is record
   Workspace          : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Dock               : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Header             : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Focused_Header     : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Rail               : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Focused_Rail       : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Action             : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Drop_Target        : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Disabled           : Flyology_TUI.Styles.Style :=
     Flyology_TUI.Styles.Default;
   Floating_Window    : Flyology_TUI.Components.Windows.Appearance;
end record;
Record fields
Workspace
Dock
Header
Focused_Header
Rail
Focused_Rail
Action
Drop_Target
Disabled
Floating_Window

Blur

procedure Blur (Item : in out Model)
Parameters
Item

Bounds

function Bounds (Item : Model) return Flyology_TUI.Geometry.Rectangle
Parameters
Item
Return value

Center_Region

function Center_Region
  (Item : Presentation) return Flyology_TUI.Geometry.Rectangle
Parameters
Item
Return value

Create

function Create
  (Panes         : Pane_Definition_Array;
   Width, Height : Natural) return Model

Configure a bounded workspace. Pane IDs and occupied dock sides must be unique. Initially floating panes remember Side as their return dock. Children, labels, and presentation styles remain caller-owned.

Parameters
Panes
Width
Height
Return value

Dock_Pane

procedure Dock_Pane
  (Item : in out Model; Id : Pane_Id; To_Side : Dock_Side)

Dock raises Structure_Error when another pane already occupies Side.

Parameters
Item
Id
To_Side

Dock_Side

type Dock_Side is (Dock_Left, Dock_Right, Dock_Top, Dock_Bottom);
Enumeration literals
Dock_Left
Dock_Right
Dock_Top
Dock_Bottom

Float_Pane

procedure Float_Pane (Item : in out Model; Id : Pane_Id)
Parameters
Item
Id

Focus

procedure Focus (Item : in out Model)
Parameters
Item

Focus_Pane

procedure Focus_Pane (Item : in out Model; Id : Pane_Id)
Parameters
Item
Id

Focused

function Focused (Item : Model) return Boolean
Parameters
Item
Return value

Focused_Pane

function Focused_Pane (Item : Model) return Pane_Id
Parameters
Item
Return value

Frame

function Frame
  (Item : Presentation) return Flyology_TUI.Surfaces.Surface
Parameters
Item
Return value

From_Theme

function From_Theme
  (Theme : Flyology_TUI.Themes.Theme) return Appearance
Parameters
Theme
Return value

Handle

function Handle
  (Item   : in out Model;
   Layout : Presentation;
   Event  : Flyology_TUI.Mouse.Local_Event)
   return Flyology_TUI.Components.Interactions.Update_Result

Coordinates are local to the workspace. Dock headers and rails own their chrome; child body clicks pass through. Floating windows acquire capture for move/resize. Releasing a header drag on a free workspace edge docks there. A stale presentation rejects new gestures, while an existing matching release always relinquishes capture.

Parameters
Item
Layout
Event
Return value

Handle

function Handle
  (Item  : in out Model;
   Event : Flyology_TUI.Events.Terminal_Event)
   return Flyology_TUI.Components.Interactions.Update_Result

Keyboard input is accepted only while focused. Tab selects a pane, Enter collapses or expands a dock, F toggles floating/docked state, and Shift+arrow docks on a free edge. Floating panes retain the Windows Alt-arrow move and Control-arrow resize behavior.

Parameters
Item
Event
Return value

Has_Pane

function Has_Pane (Item : Model; Id : Pane_Id) return Boolean
Parameters
Item
Id
Return value

Has_Pane

function Has_Pane
  (Item : Presentation; Id : Pane_Id) return Boolean
Parameters
Item
Id
Return value

Header_Region

function Header_Region
  (Item : Presentation; Id : Pane_Id)
   return Flyology_TUI.Geometry.Rectangle
Parameters
Item
Id
Return value

Height

function Height (Item : Model) return Natural
Parameters
Item
Return value

Is_Collapsed

function Is_Collapsed (Item : Model; Id : Pane_Id) return Boolean
Parameters
Item
Id
Return value

Is_Enabled

function Is_Enabled (Item : Model) return Boolean
Parameters
Item
Return value

Label

function Label (Id : Pane_Id) return Wide_Wide_String
Parameters
Id
Return value

Maximum_Panes

Maximum_Panes : Positive;

Model

type Model is tagged private;

Pane_Count

function Pane_Count (Item : Model) return Natural
Parameters
Item
Return value

Pane_Definition

type Pane_Definition is record
   Id             : Pane_Id := Pane_Id'First;
   Side           : Dock_Side := Dock_Left;
   Dock_Extent    : Positive := 20;
   Minimum_Extent : Positive := 4;
   Float_X        : Integer := 2;
   Float_Y        : Integer := 1;
   Float_Width    : Positive := 30;
   Float_Height   : Positive := 10;
   Initially_Floating  : Boolean := False;
   Initially_Collapsed : Boolean := False;
   Floatable      : Boolean := True;
   Collapsible    : Boolean := True;
end record;
Record fields
Id
Side
Dock_Extent
Minimum_Extent
Float_X
Float_Y
Float_Width
Float_Height
Initially_Floating
Initially_Collapsed
Floatable
Collapsible

Pane_Definition_Array

type Pane_Definition_Array is
  array (Integer range <>) of Pane_Definition;

Pane_Id

type Pane_Id is (<>);

Pane_Placement

type Pane_Placement is (Docked, Floating);
Enumeration literals
Docked
Floating

Pane_Region

function Pane_Region
  (Item : Presentation; Id : Pane_Id)
   return Flyology_TUI.Geometry.Rectangle
Parameters
Item
Id
Return value

Placement

function Placement
  (Item : Model; Id : Pane_Id) return Pane_Placement
Parameters
Item
Id
Return value

Present

function Present
  (Item       : Model;
   Children   : Surface_Array;
   Appearance : Dock_Workspaces.Appearance) return Presentation

Present returns one immutable frame shared by render and mouse routing. The center and every child region are exact clipped regions. Floating windows are composed in z-order after docks. Child body events are not consumed by Handle.

Parameters
Item
Children
Appearance
Return value

Present

function Present
  (Item       : Model;
   Children   : Surface_Array;
   Appearance : Dock_Workspaces.Appearance;
   Skin       : Flyology_TUI.Skins.Skin) return Presentation
Parameters
Item
Children
Appearance
Skin
Return value

Present

function Present
  (Item     : Model;
   Children : Surface_Array;
   Skin     : Flyology_TUI.Skins.Skin) return Presentation
Parameters
Item
Children
Skin
Return value

Present

function Present
  (Item     : Model;
   Children : Surface_Array;
   Theme    : Flyology_TUI.Themes.Theme) return Presentation
Parameters
Item
Children
Theme
Return value

Presentation

type Presentation is private;

Resize

procedure Resize
  (Item          : in out Model;
   Width, Height : Natural)

Resize constrains floating windows and cancels semantic movement while preserving an already-acquired capture until matching left release.

Parameters
Item
Width
Height

Set_Enabled

procedure Set_Enabled (Item : in out Model; Enabled : Boolean)
Parameters
Item
Enabled

Side

function Side (Item : Model; Id : Pane_Id) return Dock_Side
Parameters
Item
Id
Return value

Surface_Array

type Surface_Array is
  array (Pane_Id range <>) of Flyology_TUI.Surfaces.Surface;

Toggle_Collapsed

procedure Toggle_Collapsed (Item : in out Model; Id : Pane_Id)
Parameters
Item
Id

Width

function Width (Item : Model) return Natural
Parameters
Item
Return value