source: trunk/design/ui/source/wui-widgets-combo_boxes.ads

Last change on this file was 5761, checked in by vadim.godunko, 4 months ago

Add getter/setter for Current_Index.

  • Property svn:keywords set to Author Date Revision
File size: 6.0 KB
Line 
1------------------------------------------------------------------------------
2--                                                                          --
3--                            Matreshka Project                             --
4--                                                                          --
5--                               Web Framework                              --
6--                                                                          --
7--                        Runtime Library Component                         --
8--                                                                          --
9------------------------------------------------------------------------------
10--                                                                          --
11-- Copyright © 2017, Vadim Godunko <vgodunko@gmail.com>                     --
12-- All rights reserved.                                                     --
13--                                                                          --
14-- Redistribution and use in source and binary forms, with or without       --
15-- modification, are permitted provided that the following conditions       --
16-- are met:                                                                 --
17--                                                                          --
18--  * Redistributions of source code must retain the above copyright        --
19--    notice, this list of conditions and the following disclaimer.         --
20--                                                                          --
21--  * Redistributions in binary form must reproduce the above copyright     --
22--    notice, this list of conditions and the following disclaimer in the   --
23--    documentation and/or other materials provided with the distribution.  --
24--                                                                          --
25--  * Neither the name of the Vadim Godunko, IE nor the names of its        --
26--    contributors may be used to endorse or promote products derived from  --
27--    this software without specific prior written permission.              --
28--                                                                          --
29-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      --
30-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        --
31-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR    --
32-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT     --
33-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,   --
34-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --
35-- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   --
36-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   --
37-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     --
38-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS       --
39-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.             --
40--                                                                          --
41------------------------------------------------------------------------------
42--  $Revision: 5761 $ $Date: 2017-05-20 08:06:31 +0000 (Sat, 20 May 2017) $
43------------------------------------------------------------------------------
44with League.Strings;
45
46with WebAPI.HTML.Select_Elements;
47
48--with Core.Slots_0;
49--private with Core.Slots_0.Generic_Slots;
50--private with Core.Slots_0.Emitters;
51with WUI.String_Slots;
52private with WUI.String_Slots.Emitters;
53
54package WUI.Widgets.Combo_Boxes is
55
56   --  XXX Type of Index should be changed to Integer.
57
58   type Combo_Box is new WUI.Widgets.Abstract_Widget with private;
59
60   type Combo_Box_Access is access all Combo_Box'Class with Storage_Size => 0;
61
62   not overriding procedure Set_Disabled
63    (Self     : in out Combo_Box;
64     Disabled : Boolean);
65   --  Available as slot.
66
67   not overriding procedure Set_Enabled
68    (Self    : in out Combo_Box;
69     Enabled : Boolean);
70   --  Available as slot.
71
72   function Current_Index
73    (Self : in out Combo_Box'Class)
74       return League.Strings.Universal_String;
75
76   not overriding procedure Set_Current_Index
77    (Self : in out Combo_Box;
78     To   : League.Strings.Universal_String);
79   --  Available as slot.
80
81   -----------
82   -- Slots --
83   -----------
84
85   function Set_Disabled_Slot
86    (Self : in out Combo_Box'Class)
87       return WUI.Boolean_Slots.Slot'Class;
88
89   function Set_Enabled_Slot
90    (Self : in out Combo_Box'Class)
91       return WUI.Boolean_Slots.Slot'Class;
92
93   -------------
94   -- Signals --
95   -------------
96
97   not overriding function Current_Index_Changed_Signal
98    (Self : in out Combo_Box)
99       return not null access WUI.String_Slots.Signal'Class;
100
101   package Constructors is
102
103      procedure Initialize
104       (Self    : in out Combo_Box'Class;
105        Element :
106          not null WebAPI.HTML.Select_Elements.HTML_Select_Element_Access);
107
108      function Create
109       (Element :
110          not null WebAPI.HTML.Select_Elements.HTML_Select_Element_Access)
111            return not null Combo_Box_Access;
112
113      function Create
114       (Id : League.Strings.Universal_String)
115          return not null Combo_Box_Access;
116
117   end Constructors;
118
119private
120
121   type Combo_Box is new WUI.Widgets.Abstract_Widget with record
122      Current_Index_Changed : aliased
123        WUI.String_Slots.Emitters.Emitter (Combo_Box'Unchecked_Access);
124   end record;
125
126   overriding procedure Input_Event (Self : in out Combo_Box);
127
128   -----------
129   -- Slots --
130   -----------
131
132   package Set_Disabled_Slots is
133     new WUI.Boolean_Slots.Generic_Slots (Combo_Box, Set_Disabled);
134
135   function Set_Disabled_Slot
136    (Self : in out Combo_Box'Class)
137       return WUI.Boolean_Slots.Slot'Class
138         renames Set_Disabled_Slots.To_Slot;
139
140   package Set_Enabled_Slots is
141     new WUI.Boolean_Slots.Generic_Slots (Combo_Box, Set_Enabled);
142
143   function Set_Enabled_Slot
144    (Self : in out Combo_Box'Class)
145       return WUI.Boolean_Slots.Slot'Class
146         renames Set_Enabled_Slots.To_Slot;
147
148end WUI.Widgets.Combo_Boxes;
Note: See TracBrowser for help on using the repository browser.