Next: XPopup Attributes, Previous: XPopup Interaction, Up: XPopup [Contents][Index]
Note that most of the setpup/getpup routines are recursive in nature and the function will search the menu and all its submenus for the item.
It is possible to modify the display characteristics of a given XPopup item after its creation using the following routine
void fl_setpup_mode(int popup_id, int item_val, unsigned mode);
As usual popup_id
is the XPopup ID as returned by
fl_newpup()
or fl_defpup()
and
item_val
the value of the item. mode
is one of FL
PUP NONE
, FL PUP GREY
, FL PUP BOX
or FL PUP
RADIO
(one of the later two can be bitwise ORed with
FL_PUP_CHECK
, as already discussed above.
To obtain the mode of a particular menu item, use the following routine
unsigned int fl_getpup_mode(int popup_id, int item_val)
This comes in handy to check if a binary or radio item is set
if (fl_getpup_mode(popupd, item_val) & FL_PUP_CHECK) /* item is set */
There exists also a routine that can be used to obtain an items text
const char *fl_getpup_text(int popup_id, int item_val);
In some situations, especially when the popup is activated by non-pointer events (e.g., as a result of a keyboard shortcut), the default placement of popups based on mouse location might not be adequate or appropriate, thus XPopup provides the following routine to override the default placement
void fl_setpup_position(int x, int y);
where x
and y
specify the location where the top-left
corner of the popup should be. x
and y
must be given in
screen coordinates (i.e., relative to the root window) with the
origin at the top-left corner of the screen. This routine should be
used immediately before invoking fl_dopup()
, the position
is not remembered afterwards.
If x
or y
is negative, the absolute value is taken to
mean the desired location relative to the right or bottom corner of
the popup (not the screen!).
Another function exists for controlling the positon of the popup. When the fuunction
void fl_setpup_align_bottom(void);
then the pop-up will appear with its lower right hand corner aligned
aligned with the mouse position or, if also
fl_setpup_position()
is active, the postion set this way
will be interpreted to mean the lower right hand position of the
popu-up.
A radio item in a group can be initialized to be in "pushed" state by
using %R
. But you can also switch a such a radio item to
"pushed state also programmatically using
void fl_setpup_selection(int popup_id, int item_val);
Of course, other radio items of the XPopup belonging to the same group are reset to "unpushed" state.
To obtain the number of items in a popup, use the following routine
int fl_getpup_items(int popup_id)
Next: XPopup Attributes, Previous: XPopup Interaction, Up: XPopup [Contents][Index]