Newer
Older
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
module Fox
#
# An FXMenuButton posts a popup menu when clicked.
# There are many ways to control the placement where the popup will appear;
# first, the popup may be placed on either of the four sides relative to the
# menu button; this is controlled by the flags +MENUBUTTON_DOWN+, etc.
# Next, there are several attachment modes; the popup's left/bottom edge may
# attach to the menu button's left/top edge, or the popup's right/top edge may
# attach to the menu button's right/bottom edge, or both.
# Also, the popup may appear centered relative to the menu button.
# Finally, a small offset may be specified to displace the location of the
# popup by a few pixels so as to account for borders and so on.
# Normally, the menu button shows an arrow pointing to the direction where
# the popup is set to appear; this can be turned off by passing the option
# +MENUBUTTON_NOARROWS+.
#
# === Events
#
# The following messages are sent by FXMenuButton to its target:
#
# +SEL_KEYPRESS+:: sent when a key goes down; the message data is an FXEvent instance.
# +SEL_KEYRELEASE+:: sent when a key goes up; the message data is an FXEvent instance.
# +SEL_LEFTBUTTONPRESS+:: sent when the left mouse button goes down; the message data is an FXEvent instance.
# +SEL_LEFTBUTTONRELEASE+:: sent when the left mouse button goes up; the message data is an FXEvent instance.
#
# === Menu Button Style Flags
#
# Any combination of the following flags can be assigned as the menu
# button style flags.
#
# +MENUBUTTON_AUTOGRAY+:: Automatically gray out when no target
# +MENUBUTTON_AUTOHIDE+:: Automatically hide when no target
# +MENUBUTTON_TOOLBAR+:: Toolbar style
# +MENUBUTTON_NOARROWS+:: Do not show arrows
#
# === Menu Button Popup Style
#
# Any one of the following options can be assigned as the menu
# button's popup style.
#
# +MENUBUTTON_DOWN+:: Popup window appears below menu button
# +MENUBUTTON_UP+:: Popup window appears above menu button
# +MENUBUTTON_LEFT+:: Popup window to the left of the menu button
# +MENUBUTTON_RIGHT+:: Popup window to the right of the menu button
#
# === Menu Button Attachment
#
# Any combination of the following flags can be assigned as the menu
# button's attachment flags.
#
# +MENUBUTTON_ATTACH_LEFT+:: Popup attaches to the left side of the menu button
# +MENUBUTTON_ATTACH_TOP+:: Popup attaches to the top of the menu button
# +MENUBUTTON_ATTACH_RIGHT+:: Popup attaches to the right side of the menu button
# +MENUBUTTON_ATTACH_BOTTOM+:: Popup attaches to the bottom of the menu button
# +MENUBUTTON_ATTACH_CENTER+:: Popup attaches to the center of the menu button
# +MENUBUTTON_ATTACH_BOTH+:: Popup attaches to both sides of the menu button
#
class FXMenuButton < FXLabel
# The popup menu [FXPopup]
attr_accessor :menu
# X-offset where menu pops up relative to button [Integer]
attr_accessor :xOffset
# Y-offset where menu pops up relative to button [Integer]
attr_accessor :yOffset
# Menu button style [Integer]
attr_accessor :buttonStyle
# Popup style [Integer]
attr_accessor :popupStyle
# Attachment [Integer]
attr_accessor :attachment
#
# Constructor
#
def initialize(parent, text, icon=nil, popupMenu=nil, opts=JUSTIFY_NORMAL|ICON_BEFORE_TEXT|MENUBUTTON_DOWN, x=0, y=0, width=0, height=0, padLeft=DEFAULT_SPACING, padRight=DEFAULT_SPACING, padTop=DEFAULT_SPACING, padBottom=DEFAULT_SPACING) # :yields: theMenuButton
end
end