with FLTK.Widgets.Groups.Windows.Double; with FLTK.Widgets; -- this cannot be made private and I don't know why private with FLTK.Widgets.Inputs; private with FLTK.Widgets.Buttons; private with FLTK.Widgets.Buttons.Enter; private with FLTK.Widgets.Buttons.Light.Check; package Windows.Replace is type Replace_Window is new FLTK.Widgets.Groups.Windows.Double.Double_Window with private; type Replace_Callback is interface; procedure Call (This : in Replace_Callback; Item, Replace_With : in String; Match_Case, Rep_All : in Boolean) is abstract; 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_Replace_Callback (This : in out Replace_Window; Func : not null access Replace_Callback'Class); private type Replace_Marshaller is new FLTK.Widgets.Widget_Callback with null record; overriding procedure Call (This : in Replace_Marshaller; Item : in out FLTK.Widgets.Widget'Class); type Replace_Window is new FLTK.Widgets.Groups.Windows.Double.Double_Window with record Find_What, Replace_With : FLTK.Widgets.Inputs.Input; Match_Case, Replace_All : FLTK.Widgets.Buttons.Light.Check.Check_Button; Cancel : FLTK.Widgets.Buttons.Button; Start : FLTK.Widgets.Buttons.Enter.Enter_Button; Callback : access Replace_Callback'Class; end record; end Windows.Replace;