1. -- 
  2. -- Copyright (c) 2012 Kevin Wellwood 
  3. -- All rights reserved. 
  4. -- 
  5. -- This source code is distributed under the Modified BSD License. For terms and 
  6. -- conditions, see license.txt. 
  7. -- 
  8.  
  9. with Events.Listeners;                  use Events.Listeners; 
  10.  
  11. private with Ada.Containers.Indefinite_Vectors; 
  12. private with Events; 
  13.  
  14. package Widgets.Palettes.Items is 
  15.  
  16.     function Create_Item_Palette( view : not null access Game_Views.Game_View'Class; 
  17.                                   id   : String ) return A_Palette; 
  18.     pragma Precondition( id'Length > 0 ); 
  19.     pragma Postcondition( Create_Item_Palette'Result /= null ); 
  20.  
  21. private 
  22.  
  23.     use Events; 
  24.  
  25.     package Item_Types is new Ada.Containers.Indefinite_Vectors( Positive, String, "=" ); 
  26.  
  27.     type Item_Palette is new Palette and Event_Listener with 
  28.         record 
  29.             itemTypes : Item_Types.Vector;  -- vector of item ids 
  30.         end record; 
  31.  
  32.     procedure Construct( this : access Item_Palette; 
  33.                          view : not null access Game_Views.Game_View'Class; 
  34.                          id   : String ); 
  35.     pragma Precondition( id'Length > 0 ); 
  36.  
  37.     procedure Delete( this : in out Item_Palette ); 
  38.  
  39.     procedure Get_Item_Details( this   : access Item_Palette; 
  40.                                 row, 
  41.                                 col    : Natural; 
  42.                                 bmp    : out A_Allegro_Bitmap; 
  43.                                 border : out Allegro_Color ); 
  44.  
  45.     function Get_Scroll_Inc_Y( this : access Item_Palette ) return Integer; 
  46.  
  47.     function Get_Item_Count( this : access Item_Palette ) return Natural; 
  48.  
  49.     procedure Handle_Event( this : access Item_Palette; 
  50.                             evt  : in out A_Event; 
  51.                             resp : out Response_Type ); 
  52.     pragma Precondition( evt /= null ); 
  53.  
  54.     procedure On_Mouse_Press( this : access Item_Palette; 
  55.                               evt  : not null A_Mouse_Button_Event ); 
  56.  
  57. end Widgets.Palettes.Items;