diff options
author | Jed Barber <jjbarber@y7mail.com> | 2017-04-27 10:40:48 +1000 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2017-04-27 10:40:48 +1000 |
commit | 0d842f0423ba0754fb3675c7468397a8da5f6e1b (patch) | |
tree | d5da172bc7af2f7f48a3415eceac67ed67542787 /src/fltk-widgets-menus.ads | |
parent | 5d88963cd203f30b79433e34e5c89bfcf8abfe60 (diff) |
Organising source
Diffstat (limited to 'src/fltk-widgets-menus.ads')
-rw-r--r-- | src/fltk-widgets-menus.ads | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/fltk-widgets-menus.ads b/src/fltk-widgets-menus.ads new file mode 100644 index 0000000..d01f02e --- /dev/null +++ b/src/fltk-widgets-menus.ads @@ -0,0 +1,97 @@ + + +with FLTK.Enums; use FLTK.Enums; +private with Interfaces; +private with System; + + +package FLTK.Widgets.Menus is + + + type Menu is abstract new Widget with private; + type Menu_Cursor (Data : access Menu'Class) is limited null record + with Implicit_Dereference => Data; + + + type Menu_Item is tagged limited private; + + + type Index is new Positive; + + + type Menu_Flag is private; + function "+" (Left, Right : in Menu_Flag) return Menu_Flag; + Flag_Normal : constant Menu_Flag; + Flag_Inactive : constant Menu_Flag; + Flag_Toggle : constant Menu_Flag; + Flag_Value : constant Menu_Flag; + Flag_Radio : constant Menu_Flag; + Flag_Invisible : constant Menu_Flag; + Flag_Submenu : constant Menu_Flag; + Flag_Divider : constant Menu_Flag; + + + function Create + (X, Y, W, H : in Integer; + Text : in String) + return Menu is abstract; + + + procedure Add + (This : in out Menu; + Text : in String; + Action : in Widget_Callback := null; + Shortcut : in Shortcut_Key := No_Key; + Flags : in Menu_Flag := Flag_Normal); + + + function Find_Item + (This : in Menu'Class; + Name : in String) + return Menu_Item; + + + function Chosen + (This : in Menu'Class) + return Menu_Item; + + + function Value + (Item : in Menu_Item) + return Boolean; + + + procedure Activate + (Item : in Menu_Item); + + + procedure Deactivate + (Item : in Menu_Item); + + +private + + + type Menu is abstract new Widget with null record; + + + type Menu_Item is tagged limited + record + Void_Ptr : System.Address; + end record; + + + type Menu_Flag is new Interfaces.Unsigned_8; + Flag_Normal : constant Menu_Flag := 2#00000000#; + Flag_Inactive : constant Menu_Flag := 2#00000001#; + Flag_Toggle : constant Menu_Flag := 2#00000010#; + Flag_Value : constant Menu_Flag := 2#00000100#; + Flag_Radio : constant Menu_Flag := 2#00001000#; + Flag_Invisible : constant Menu_Flag := 2#00010000#; + -- Flag_Submenu_Pointer unlikely to be used + Flag_Submenu : constant Menu_Flag := 2#01000000#; + Flag_Divider : constant Menu_Flag := 2#10000000#; + + +end FLTK.Widgets.Menus; + |