with FLTK.Enums; use FLTK.Enums; package body Editors is function Create (X, Y, W, H : in Integer; Label_Text : in String) return Editor_Window is Width, Height : Integer; begin if W < 300 then Width := 300; else Width := W; end if; if H < 60 then Height := 60; else Height := H; end if; return This : Editor_Window := (Double_Window'(Create (X, Y, Width, Height, Label_Text)) with Editor => Text_Editor'(Create (0, 30, Width, Height - 30, "")), Bar => Menu_Bar'(Create (0, 0, Width, 30, ""))) do This.Add (This.Editor); This.Add (This.Bar); This.Editor.Set_Text_Font (Courier); end return; end Create; function Create (W, H : in Integer) return Editor_Window is begin return Create (0, 0, W, H, "(Untitled)"); end Create; function Get_Buffer (This : in Editor_Window) return Text_Buffer_Cursor is begin return This.Editor.Get_Buffer; end Get_Buffer; procedure Set_Buffer (This : in out Editor_Window; Buff : in out Text_Buffer) is begin This.Editor.Set_Buffer (Buff); end Set_Buffer; function Get_Menu (This : in out Editor_Window) return Menu_Cursor is begin return Ref : Menu_Cursor (This.Bar'Access); end Get_Menu; procedure Undo (This : in out Editor_Window) is begin This.Editor.Undo; end Undo; procedure Cut (This : in out Editor_Window) is begin This.Editor.Cut; end Cut; procedure Copy (This : in out Editor_Window) is begin This.Editor.Copy; end Copy; procedure Paste (This : in out Editor_Window) is begin This.Editor.Paste; end Paste; procedure Delete (This : in out Editor_Window) is begin This.Editor.Delete; end Delete; end Editors;