1. limited with Game_Views; 
  2.  
  3. package Widgets.Buttons.Pushes is 
  4.  
  5.     type Push_Button is new Button with private; 
  6.     type A_Push_Button is access all Push_Button'Class; 
  7.  
  8.     function Create_Push_Button( view : not null access Game_Views.Game_View'Class; 
  9.                                  id   : String; 
  10.                                  text : String := ""; 
  11.                                  icon : String := "" ) return A_Button; 
  12.     pragma Precondition( id'Length > 0 ); 
  13.     pragma Postcondition( Create_Push_Button'Result /= null ); 
  14.  
  15. private 
  16.  
  17.     type Push_Button is new Button with null record; 
  18.  
  19.     procedure Handle_Blur( this : access Push_Button ); 
  20.  
  21.     function Handle_Key_Press( this : access Push_Button; 
  22.                                evt  : not null A_Key_Event ) return Boolean; 
  23.  
  24.     function Handle_Key_Release( this : access Push_Button; 
  25.                                  evt  : not null A_Key_Event ) return Boolean; 
  26.  
  27.     procedure Handle_Mouse_Held( this : access Push_Button; 
  28.                                  evt  : not null A_Mouse_Button_Event ); 
  29.  
  30.     procedure Handle_Mouse_Press( this : access Push_Button; 
  31.                                   evt  : not null A_Mouse_Button_Event ); 
  32.  
  33.     procedure Handle_Mouse_Release( this : access Push_Button; 
  34.                                     evt  : not null A_Mouse_Button_Event ); 
  35.  
  36.     procedure Toggle_State( this : access Push_Button ); 
  37.  
  38. end Widgets.Buttons.Pushes;