private with Ada.Containers.Doubly_Linked_Lists;
package Widgets.Buttons.Groups is
type Button_Group is new Object and Button_Listener with private;
type A_Button_Group is access all Button_Group'Class;
function Create_Button_Group return A_Button_Group;
pragma Postcondition( Create_Button_Group'Result /= null );
procedure Add( this : access Button_Group; button : not null A_Button );
procedure Clear( this : access Button_Group );
procedure Unset( this : access Button_Group );
procedure Set_Keep_Selected( this : access Button_Group; keep : Boolean );
procedure Delete( this : in out A_Button_Group );
pragma Postcondition( this = null );
private
package Button_Collection is new Ada.Containers.Doubly_Linked_Lists( A_Button, "=" );
use Button_Collection;
type Button_Group is new Object and Button_Listener with
record
buttons : Button_Collection.List;
pressed : A_Button := null;
keep_selected : Boolean := True;
end record;
procedure Delete( this : in out Button_Group );
procedure Handle_Action( this : access Button_Group;
action : A_Button_Action );
function To_String( this : access Button_Group ) return String;
end Widgets.Buttons.Groups;