with FLTK.Widgets.Groups.Windows.Double; use FLTK.Widgets.Groups.Windows.Double; with FLTK.Widgets.Menus; use FLTK.Widgets.Menus; with FLTK.Text_Buffers; use FLTK.Text_Buffers; private with FLTK.Widgets.Groups.Text_Displays.Text_Editors; private with FLTK.Widgets.Menus.Menu_Bars; private with FLTK.Widgets.Boxes; private with FLTK.Widgets; private with FLTK.Widgets.Inputs; private with FLTK.Widgets.Buttons; private with FLTK.Widgets.Buttons.Enter; private with FLTK.Widgets.Buttons.Light.Check; package Editor_Windows is type Editor_Window is new Double_Window with private; Min_Editor_Height : Integer := 60; Min_Editor_Width : Integer := 300; function Create (X, Y, W, H : in Integer; Label_Text : in String) return Editor_Window; function Create (W, H : in Integer) return Editor_Window; function Get_Buffer (This : in Editor_Window) return Text_Buffer_Cursor; procedure Set_Buffer (This : in out Editor_Window; Buff : in out Text_Buffer); function Get_Menu (This : in out Editor_Window) return Menu_Cursor; procedure Undo (This : in out Editor_Window); procedure Cut (This : in out Editor_Window); procedure Copy (This : in out Editor_Window); procedure Paste (This : in out Editor_Window); procedure Delete (This : in out Editor_Window); type About_Window is new Double_Window with private; function Create return About_Window; function Create (X, Y, W, H : in Integer; Label_Text : in String) return About_Window; function Create (W, H : in Integer) return About_Window; type Find_Window is new Double_Window with private; function Create return Find_Window; function Create (X, Y, W, H : in Integer; Label_Text : in String) return Find_Window; function Create (W, H : in Integer) return Find_Window; procedure Set_Function (This : in out Find_Window; Func : access procedure (Item : in String)); type Replace_Window is new Double_Window with private; function Create return Replace_Window; function Create (X, Y, W, H : in Integer; Label_Text : in String) return Replace_Window; function Create (W, H : in Integer) return Replace_Window; procedure Set_Function (This : in out Replace_Window; Func : access procedure (Item : in String)); private use FLTK.Widgets.Groups.Text_Displays.Text_Editors; use FLTK.Widgets.Menus.Menu_Bars; use FLTK.Widgets.Boxes; use FLTK.Widgets; use FLTK.Widgets.Inputs; use FLTK.Widgets.Buttons; use FLTK.Widgets.Buttons.Enter; use FLTK.Widgets.Buttons.Light.Check; type Editor_Window is new Double_Window with record Bar : aliased Menu_Bar; Editor : Text_Editor; end record; type Hide_Callback is new Widget_Callback with null record; overriding procedure Call (This : in Hide_Callback; Item : in out Widget'Class); type About_Window is new Double_Window with record Heading : Box; Blurb : Box; Author : Box; Dismiss : Enter_Button; end record; type Find_Window is new Double_Window with record Find_What : Input; Match_Case : Check_Button; Cancel : Button; Start : Enter_Button; -- callback end record; type Replace_Window is new Double_Window with record Find_What, Replace_With : Input; Match_Case, Replace_All : Check_Button; Cancel : Button; Start : Enter_Button; -- callback end record; end Editor_Windows;