1. with Events; 
  2.  
  3. pragma Elaborate_All( Events ); 
  4.  
  5. package Events.Application is 
  6.  
  7.     type Close_Window_Event is new Event with private; 
  8.  
  9.     type App_Blur_Event is new Event with private; 
  10.  
  11.     type App_Focus_Event is new Event with private; 
  12.  
  13.     APP_BLUR_ID      : constant Event_Id := To_Event_Id( "App_Blur" ); 
  14.     APP_FOCUS_ID     : constant Event_Id := To_Event_Id( "App_Focus" ); 
  15.     CLOSE_REQUEST_ID : constant Event_Id := To_Event_Id( "Close_Request" ); 
  16.     CLOSE_WINDOW_ID  : constant Event_Id := To_Event_Id( "Close_Window" ); 
  17.  
  18.     ---------------------------------------------------------------------------- 
  19.  
  20.     procedure Queue_App_Blur; 
  21.  
  22.     procedure Queue_App_Focus; 
  23.  
  24.     procedure Queue_Close_Request; 
  25.  
  26.     procedure Queue_Close_Window; 
  27.  
  28. private 
  29.  
  30.     type App_Blur_Event is new Event with null record; 
  31.  
  32.     procedure Construct( this : access App_Blur_Event ); 
  33.  
  34.     ---------------------------------------------------------------------------- 
  35.  
  36.     type App_Focus_Event is new Event with null record; 
  37.  
  38.     procedure Construct( this : access App_Focus_Event ); 
  39.  
  40.     ---------------------------------------------------------------------------- 
  41.  
  42.     type Close_Request_Event is new Event with null record; 
  43.  
  44.     procedure Construct( this : access Close_Request_Event ); 
  45.  
  46.     ---------------------------------------------------------------------------- 
  47.  
  48.     type Close_Window_Event is new Event with null record; 
  49.  
  50.     procedure Construct( this : access Close_Window_Event ); 
  51.  
  52. end Events.Application;