blob: 5e0751f5fdac8547fe7cc7d0b38de6a9a254ce8f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
with FLTK.Callbacks;
private with Interfaces;
package FLTK.Menu_Items is
type Menu_Item is new Wrapper with private;
type Shortcut_Key is private;
subtype Pressable_Key is Character range Character'Val (32) .. Character'Val (126);
function Shortcut (Key : Pressable_Key) return Shortcut_Key;
No_Key : constant Shortcut_Key;
type Modifier_Key is private;
function "+" (Left, Right : in Modifier_Key) return Modifier_Key;
function "+" (Left : in Modifier_Key; Right : in Pressable_Key) return Shortcut_Key;
function "+" (Left : in Modifier_Key; Right : in Shortcut_Key) return Shortcut_Key;
Mod_None : constant Modifier_Key;
Mod_Shift : constant Modifier_Key;
Mod_Ctrl : constant Modifier_Key;
Mod_Alt : constant Modifier_Key;
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
(Text : in String;
Action : in FLTK.Callbacks.Callback;
Shortcut : in Shortcut_Key := No_Key;
Flags : in Menu_Flag := Flag_Normal)
return Menu_Item;
private
-- these values designed to align with FLTK enumeration types
type Modifier_Key is new Interfaces.Unsigned_8;
Mod_None : constant Modifier_Key := 2#0000#;
Mod_Shift : constant Modifier_Key := 2#0001#;
Mod_Ctrl : constant Modifier_Key := 2#0100#;
Mod_Alt : constant Modifier_Key := 2#1000#;
type Shortcut_Key is
record
Modifier : Modifier_Key;
Keypress : Character;
end record;
No_Key : constant Shortcut_Key :=
(Modifier => Mod_None, Keypress => Character'Val (0));
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 is currently unused
Flag_Submenu : constant Menu_Flag := 2#01000000#;
Flag_Divider : constant Menu_Flag := 2#10000000#;
type Menu_Item is new Wrapper with null record;
overriding procedure Finalize
(This : in out Menu_Item);
end FLTK.Menu_Items;
|