Expand/Shrink

Common

The following attributes are common to several controls/interface element types:

ACTIVE+ Activates or inhibits user interaction. Value "YES" (active), "NO" (inactive). Default: "YES". Alternatively, IupSetInt() and IupGetInt() can be used with true/false, or IupToggleInt().
An interface element is only active if its native parent is also active.
ACTIVE can also be set for controls that do not have user interaction because they may have a visual feedback to indicate the inactive state.
In GTK and Motif the inactive dialogs will still be able to move, resize and change their Z-order.
Affects: All controls that have visual representation.
BGCOLOR+ Element’s background color.

Value: The RGB components.

Values should be between 0 and 255, separated by a blank space. For example "255 0 128", red=255 blue=0 green=128.

Default: It is the value of the DLGBGCOLOR global attribute.
On some controls if not defined will inherit the background of the native parent.

Hexadecimal notation in the format "#RRGGBB" is also accepted in all color attributes. For example, "255 0 128" can also be written as "#FF0080".
Note that double quotes are still required when using IupSetAttributes(), and therefore the inline string attributes of control creation, eg IupSetAttributes(ih,`BGCOLOR="#FF0080"`).

Affects: All controls that have visual representation, but with some restrictions.

Several controls have transparent parts that are not affected by the BGCOLOR.

Run demo\pGUI\sample.exw and use the menu to toggle the dialog BACKGROUND, the dialog BGCOLOR and the children BGCOLOR.

See Also: FGCOLOR, DLGBGCOLOR
CLIENTOFFSET (read-only, non inheritable)
Returns the container native offset to the Client area, see the Layout Guide.
Useful for IupFrame, IupTabs and IupDialog that have decorations.
Can also be consulted in other containers, it will simply return "0x0".
This attribute can be used in conjunction with the POSITION attribute of a child so the coordinates of a child relative to the native parent can be obtained.

Value: "dxxdy", where dx and dy are integer values corresponding to the horizontal and vertical offsets, respectively, in pixels.

Affects: All elements that are containers, except menus.

Notes:
In GTK and Motif, for the IupDialog, the dy value is negative when there is a menu.
This occurs because in those systems the menu is placed inside the Client Area and all children must be placed below the menu.
In Windows, for the IupFrame, the value is always "0x0" the position of the child is still relative to the top-left corner of the frame.
This is automatically compensated in calculation of the POSITION attribute.

See Also: SIZE+, RASTERSIZE+, CLIENTSIZE, POSITION
CLIENTSIZE (read-only [except on IupDialog], non inheritable)
Returns the client area size of a container.
It is the space available for positioning and sizing children, see the Layout Guide.
It is the container Current size excluding the decorations (if any).

Value: "widthxheight", where width and height are integer values corresponding to the horizontal and vertical size, respectively, in pixels.

Affects: All elements that are containers, except menus.

Notes:
For IupHbox, IupVbox and IupGridBox it consider the MARGIN attribute as a decoration.
For IupBackgroundBox, is only available after the control is mapped.
For IupDialog is NOT read-only, and it will re-define RASTERSIZE+ by adding the decorations to the actual Client size.
For IupSplit returns the total area available for the two children.

See Also: SIZE+, RASTERSIZE+, CLIENTOFFSET
CURSOR (non inheritable) Defines the element’s cursor.

Value: Name of a cursor.

It will check first for the following predefined names:
Name
    "NONE" or "NULL"
"ARROW"
"BUSY"
"CROSS"
"HAND"
"HELP"
"MOVE"
"PEN"
"RESIZE_N"
"RESIZE_S"
"RESIZE_NS"
"RESIZE_W"
"RESIZE_E"
"RESIZE_WE"
"RESIZE_NE"
"RESIZE_SW"
"RESIZE_NW"
"RESIZE_SE"
"TEXT"
---- "APPSTARTING" (Windows Only)
---- "NO" (Windows Only)
"UPARROW"

Default: "ARROW"

The Windows SDK recommends that cursors and icons should be implemented as resources rather than created at run time.

The GTK cursors have the same appearance of the X-Windows cursors, although GTK cursors can have more than 2 colors depending on the X-Server.

If it is not a pre-defined name, then will check for other system cursors.
In Windows the value will be used to load a cursor from the application resources. (??)
In Motif the value will be used as a X-Windows cursor number, see definitions in the X11 header "cursorfont.h".
In GTK the value will be used as a cursor name, see the GDK documentation on Cursors.

If no system cursors were found then the value will be used to try to find an IUP image with the same name.
Use IupSetHandle to define a name for an IupImage, however the image needs an extra attribute and some specific characteristics:

For an image to represent a cursor, it should have the attribute "HOTSPOT" to define the cursor hotspot (place where the mouse click is actually effective).
The default value is "0:0".

Usually only color indices 0, 1 and 2 can be used in a cursor, where 0 will be transparent (must be "BGCOLOR").
The RGB colors corresponding to indices 1 and 2 are defined just as in regular images.
In Windows and GTK the cursor can have more than 2 colors.
Cursor sizes are usually less than or equal to 32x32.

The cursor will only change when the interface system regains control or when IupFlush is called.

The Windows SDK recommends that cursors and icons should be implemented as resources rather than created at run time.

When the cursor image is no longer necessary, it must be destroyed through function IupDestroy.
Attention: the cursor cannot be in use when it is destroyed.

Affects: IupDialog, IupCanvas

See Also IupImage
EXPAND Allows the element to expand, fulfilling empty spaces inside its container.

It is a non inheritable attribute, but a container inherit its parents EXPAND attribute.
In other words, although EXPAND is non inheritable, it is inheritable for containers.
So if you set it at a container it will not affect its children, except for those who are containers.
The expansion is done equally for all expandable elements in the same container.

For a container, the actual EXPAND value will be always a combination of its own value and the value of its children,
in the sense that a container can only expand if its children can expand too in the same direction.

The HORIZONTALFREE and VERTICALFREE values will not behave as normal expansion.
These values will NOT affect the expansion of the container when set at its children,
the children will simply expand to the available free space at the container.
See the Layout Guide for more details on sizes.
Value: "YES" (both directions), "HORIZONTAL", "VERTICAL", "HORIZONTALFREE", "VERTICALFREE" or "NO".
Default: "NO". For containers the default is "YES".
Affects: All elements, except menus.
FGCOLOR Elements foreground color. Usually it is the color of the associated text.

Value: The RGB components. Values should be between 0 and 255, separated by a blank space. Default: "0 0 0".

Hexadecimal notation in the format "#RRGGBB" is also accepted in all color attributes. For example, "255 0 128" can also be written as "#FF0080".
Note that double quotes are still required when using IupSetAttributes(), and therefore the inline string attributes of control creation, eg IupSetAttributes(ih,`FGCOLOR="#FF0080"`).

Affects: All controls that have visual representation.

See Also: BGCOLOR
FLOATING (non inheritable) If an element has FLOATING=YES then its size and position will be ignored by the layout processing in IupHbox, IupVbox and IupZbox.
But the element size and position will still be updated in the native system allowing the usage of SIZE+ or RASTERSIZE+ and POSITION to manually position and size the element.
And must ensure that the element will be on top of other using ZORDER, if there is overlap.

This is useful when you do not want that an invisible element to be computed in the box size.

If the value IGNORE is used then it will behave as YES, but also it will not update the the size and position in the native system.

Value: "YES", "IGNORE" or "NO". Default: "NO".

Affects: All elements, except menus.

See Also: IupHbox, IupVbox, IupZbox
FONT A string defining the font, in the format "<face>, <styles> <size>".

Since font face names are not a standard between Windows, Motif and GTK, a few names are specially handled to improve application portability. If you want to use names that work for all systems we recommend using: Courier, Times and Helvetica (same as Motif). Those names always have a native system equivalent, see the table below:

Recommended/Motif Windows GTK Description
Helvetica Arial Sans without serif, variable spacing
Courier Courier New Monospace with serif, fixed spacing
Times Times New Roman Serif with serif, variable spacing

The supported font style is a combination of: Bold, Italic, Underline and Strikeout. Unsupported values are simply ignored. The names must be in the same case described here.

Font size is in points (1/72 inch) or in pixels (using negative values).

Examples:

    "Times, Bold 18"
    "Arial, 24" -- (no style)
    "Courier New, Italic Underline -30" -- (size in pixels)

On Windows the native handle can be obtained using the "HFONT" attribute.
On Motif the native handle can be obtained using the "XMFONTLIST" and "XFONTSTRUCT" attributes. The selected X Logical Font Description string can be obtained from the attribute "XLFD".
On GTK the native handle can be obtained using the "PANGOFONTDESC" attribute.

Auxiliary Attributes

These will change the FONT attribute, and depend on it.
They are used only to set partial FONT parameters of style and size.
To do that the FONT attribute is parsed, changed and updated to the new value in the common format definition.
This means that if the attribute was set in X-Windows format or in the old Windows and IUP formats, the previous value will be replaced by a new value in the common format definition.
Pango additional styles will also be removed.

FONTSTYLE(non inheritable) Replaces or returns the style of the current FONT attribute.
Since font styles are case sensitive, this attribute is also case sensitive.
FONTSIZE(non inheritable) Replaces or returns the size of the current FONT attribute.
FONTFACE(non inheritable) Replaces or returns the face name of the current FONT attribute.
CHARSIZE(read-only, non inheritable) Returns the average character size of the current FONT attribute.
This is the factor used by the SIZE+ attribute to convert its units to pixels.
FOUNDRY[Motif Only] (non inheritable) Allows to select a foundry for the FONT being selected.
Must be set before setting the FONT attribute.

NAME (non inheritable) Name of the control inside the dialog. Not related to IupSetHandle.

Value: Text.

The NAME value will be used by IupGetDialogChild to find a child inside a dialog.

Affects: All controls.

See Also: IupGetDialogChild
NATURALSIZE (non inheritable, read-only) Returns the element last computed Natural size in pixels.

See the Layout Guide for more details on sizes.

Value: "widthxheight", where width and height are integer values corresponding to the horizontal and vertical size, respectively, in pixels.

See Also: SIZE+, RASTERSIZE+
MAXSIZE+ (non inheritable) Specifies the element maximum size in pixels during the layout process.

See the Layout Guide for more details on sizes.

Value; "widthxheight", where width and height are integer values corresponding to the horizontal and vertical size, respectively, in pixels.

You can also set only one of the parameters by removing the other one and maintaining the separator "x", but this is equivalent of setting the other value to 0. For example: "x40" (height only = "0x40") or "40x" (width only = "40x0").

Affects: All, except menus.

Notes: The limits are applied during the layout computation. It will limit the Natural size and the Current size.

If the element can be expanded, then its empty space will NOT be occupied by other controls although its size will be limited.

In the IupDialog will also limit the interactive resize of the dialog.

See Also: RASTERSIZE+, MINSIZE
MINSIZE+ (non inheritable) Specifies the element minimum size in pixels during the layout process.

See the Layout Guide for more details on sizes.

Value: "widthxheight", where width and height are integer values corresponding to the horizontal and vertical size, respectively, in pixels.

You can also set only one of the parameters by removing the other one and maintaining the separator "x", but this is equivalent of setting the other value to 0. For example: "x40" (height only = "0x40") or "40x" (width only = "40x0").

Affects: All, except menus.

Notes: The limits are applied during the layout computation. It will limit the Natural size and the Current size.

If the element can be expanded, then its empty space will NOT be occupied by other controls although its size will be limited.

In the IupDialog will also limit the interactive resize of the dialog.

See Also: RASTERSIZE+, MAXSIZE
SCREENPOSITION/X/Y (read-only) (non inheritable) Returns the absolute horizontal and/or vertical position of the top left corner of the client area relative to the origin of the main screen in pixels.
It is similar to POSITION but relative to the origin of the main screen, instead of the origin of the client area.
The origin of the main screen is at the upper left corner, in Windows it is affected by the position of the Start Menu when it is at the top or left side of the screen.

IMPORTANT: For the dialog, it is the position of the top left corner of the window, NOT the client area.
It is the same position used in IupShowXY and IupPopup.
In GTK, if the dialog is hidden the values can be outdated.

Value: "x,y", where x and y are integer values corresponding to the horizontal and vertical position, respectively, in pixels.
When X or Y are used a single value is returned.

Affects: All controls that have visual representation.

See Also: POSITION
SCROLLBAR? (creation only) Associates a horizontal and/or vertical scrollbar to the element.

Value: "VERTICAL", "HORIZONTAL", "YES" (both) or "NO" (none). Default: "NO"

For IupCanvas and IupGLCanvas only, the following secondary attributes apply.

Configuration Attributes

(non inheritable)
DX? Size of the thumb in the horizontal scrollbar. Also the horizontal page size. Default: "0.1".
DY? Size of the thumb in the vertical scrollbar. Also the vertical page size. Default: "0.1".
POSXPosition of the thumb in the horizontal scrollbar. Default: "0.0".
POSYPosition of the thumb in the vertical scrollbar. Default: "0.0".
XMINMinimum value of the horizontal scrollbar. Default: "0.0".
XMAXMaximum value of the horizontal scrollbar. Default: "1.0".
YMINMinimum value of the vertical scrollbar. Default: "0.0".
YMAXMaximum value of the vertical scrollbar. Default: "1.0".
LINEXThe amount the thumb moves when an horizontal step is performed. Default: 1/10th of DX. (since 3.0)
LINEYThe amount the thumb moves when a vertical step is performed. Default: 1/10th of DY. (since 3.0)
XAUTOHIDEWhen enabled, if DX >= XMAX-XMIN then the horizontal scrollbar is hidden. Default: "YES". (since 3.0)
YAUTOHIDEWhen enabled, if DY >= YMAX-YMIN then the vertical scrollbar is hidden. Default: "YES". (since 3.0)
XHIDDENreturns if the scrollbar is hidden or not when XAUTOHIDE=Yes. (since 3.13)
YHIDDENreturns if the scrollbar is hidden or not when YAUTOHIDE=Yes. (since 3.13)

 
The scrollbar allows you to create a virtual space associated to the element.
In the image below, such space is marked in red, as well as the attributes that affect the composition of this space.
In green you can see how these attributes are reflected on the scrollbar.



Hence you can clearly deduce that POSX is limited to XMIN and XMAX-DX, or XMIN<=POSX<=XMAX-DX.

Usually applications configure XMIN and XMAX to a region in World coordinates, and set DX to the canvas visible area in World coordinates.
Since the canvas can have scrollbars and borders, its visible area in pixel coordinates can be easily obtained using the DRAWSIZE attribute.

IMPORTANT: the LINEX, XMAX and XMIN attributes are only updated in the scrollbar when the DX attribute is updated.

IMPORTANT: when working with a virtual space with integer coordinates, set XMAX to the integer size of the virtual space, NOT to "width-1",
or the last pixel of the virtual space will never be visible.
If you decide to let XMAX with the default value of 1.0 and to control only DX, then use the formula DX=visible_width/width.

IMPORTANT: When the virtual space has the same size as the canvas, i.e. when DX >= XMAX-XMIN, the scrollbar is automatically hidden if XAUTOHIDE=Yes.
The width of the vertical scrollbar (the same as the height of the horizontal scrollbar) can be obtained using the SCROLLBARSIZE global attribute (since 3.9).

The same is valid for YMIN, YMAX, DY and POSY. But remember that the Y axis is oriented from top to bottom in IUP.
So if you want to consider YMIN and YMAX as bottom-up oriented, then the actual YPOS must be obtained using YMAX-DY-POSY.

IMPORTANT: Changes in the scrollbar parameters do NOT generate ACTION nor SCROLL_CB callback events.
If you need to update the canvas contents call your own action callback or call IupUpdate.
But a change in the DX attribute may generate a RESIZE_CB callback event if XAUTOHIDE=Yes.

If you have to change the properties of the scrollbar (XMIN, XMAX and DX) but you want to keep the thumb still (if possible) in the same relative position,
then you have to also recalculate its position (POSX) using the old position as reference to the new one.
For example, you can convert it to a 0-1 interval and then scale to the new limits:

old_posx_relative = (old_posx - old_xmin)/(old_xmax - old_xmin)
posx = (xmax - xmin)*old_posx_relative + xmin

IupList, IupTree, and IupText/IupMultiLine scrollbars are automatically managed and do NOT have the POS*, *MIN, *MAX and D* attributes.

When updating the virtual space size, or when the canvas is resized, if XAUTOHIDE=Yes then calculating the actual DX size can be very tricky.
Here is a helpful algorithm:

procedure scrollbar_update(Ihandle ih, integer view_width, integer view_height)
-- view_width and view_height are the virtual space size
-- here we assume XMIN=0, XMAX=1, YMIN=0, YMAX=1
integer {elem_width, elem_height} = IupGetIntInt(ih, "RASTERSIZE")
integer canvas_width, canvas_height
integer scrollbar_size = IupGetInt(NULL, "SCROLLBARSIZE")
integer border = IupGetInt(ih, "BORDER")

    -- if view is greater than canvas in one direction,
    -- then it has scrollbars,
    -- but this affects the opposite direction
    elem_width -= 2 * border;  -- remove BORDER (always size=1)
    elem_height -= 2 * border;
    canvas_width = elem_width;
    canvas_height = elem_height;
    if view_width>elem_width then -- check for horizontal scrollbar
        canvas_height -= scrollbar_size  -- affect vertical size
    end if
    if view_height>elem_height then
        canvas_width -= scrollbar_size
    end if
    -- check if still has horizontal scrollbar
    if view_width<=elem_width and view_width>canvas_width then
        canvas_height -= scrollbar_size
    end if
    if view_height<=elem_height and view_height>canvas_height then
        canvas_width -= scrollbar_size
    end if
    if canvas_width<0 then canvas_width = 0 end if
    if canvas_height<0 then canvas_height = 0 end if

    IupSetFloat(ih, "DX", canvas_width/view_width)
    IupSetFloat(ih, "DY", canvas_height/view_height)
end procedure

Inside the canvas ACTION callback, the (x,y) offset for drawing is calculated as:

integer x, y, canvas_width, canvas_height
atom posy = IupGetFloat(ih, "POSY")
atom posx = IupGetFloat(ih, "POSX")

{canvas_width, canvas_height} = IupGetIntInt(ih, "DRAWSIZE")

if canvas_width<view_width then
    x = floor(-posx*view_width)
else
    x = floor((canvas_width-view_width)/2)  -- for example, center the view
end if
if canvas_height<view_height then
    -- posy is top-bottom, CD and OpenGL are bottom-top.
    -- invert posy reference (YMAX-DY - POSY)
    atom dy = IupGetFloat(ih, "DY")
    posy = 1 - dy - posy
    y = floor(-posy*view_height)
else
    y = floor((canvas_height-view_height)/2)  -- for example, center the view
end if

Call scrollbar_update from the RESIZE_CB callback and when you change the zoom factor that affects view_width or view_height.

Affects: IupList, IupMultiLine, IupCanvas
POSITION (non inheritable) The position of the element relative to the origin of the Client area of the native parent.
If you add the CLIENTOFFSET attribute of the native parent, you can obtain the coordinates relative to the Window area of the native parent. See the Layout Guide.

It will be changed during the layout computation, except when FLOATING=YES or when used inside a concrete layout container.

Value: "x,y", where x and y are integer values corresponding to the horizontal and vertical position, respectively, in pixels.

Affects: All, except menus.

See Also: SIZE+, RASTERSIZE+, FLOATING, CLIENTOFFSET
RASTERSIZE+ (non inheritable) Specifies the element User size, and returns the Current size, in pixels.

See the Layout Guide for more details on sizes.

Value: "widthxheight", where width and height are integer values corresponding to the horizontal and vertical size, respectively, in pixels.

You can also set only one of the parameters by removing the other one and maintaining the separator "x", but this is equivalent of setting the other value to 0. For example: "x40" (height only = "0x40") or "40x" (width only = "40x0").

When this attribute is consulted the Current size of the control is returned.

Affects: All, except menus.

Notes: When this attribute is set, it resets the SIZE+ attribute. So changes to the FONT attribute will not affect the User size of the element.

To obtain the last computed Natural size of the control in pixels, use the read-only attribute NATURALSIZE. (Since 3.6)

To obtain the User size of the element in pixels after it is mapped, use the attribute USERSIZE. (Since 3.12)

A User size of "0x0" can be set, it can also be set using NULL. If both values are 0 then NULL is returned.

If you wish to use the User size only as an initial size, change this attribute to NULL after the control is mapped, the returned size in IupGetAttribute will still be the Current size. NB: In one case (Conway’s game of life) setting a timer before the IupShow() prevented the latter from returning for quite some time, and perhaps not until Escape had been keyed, so it may be prudent not to create a timer until after RASTERSIZE has been set to NULL, otherwise it may not behave as desired.

The element is NOT immediately repositioned. Call IupRefresh to update the dialog layout.

IupMap also updates the dialog layout even if it is already mapped, so calling it or calling IupShow, IupShowXY or IupPopup (they all call IupMap) will also update the dialog layout.

See Also: SIZE+, FONT
SIZE+ (non inheritable) Specifies the element User size, and returns the Current size, in units proportional to the size of a character.

See the Layout Guide for more details on sizes.

Value: "widthxheight", where width and height are integer values corresponding to the horizontal and vertical size, respectively, in characters fraction unit (see Notes below).

You can also set only one of the parameters by removing the other one and maintaining the separator "x", but this is equivalent of setting the other value to 0.
For example: "x40" (height only = "0x40") or "40x" (width only = "40x0").

When this attribute is consulted the Current size of the control is returned.

Notes
The size units observes the following heuristics:

Width in 1/4’s of the average width of a character for the current FONT of each control.
Height in 1/8’s of the average height of a character for the current FONT of each control.
So, a SIZE="4x8" means 1 character width and 1 character height.

Notice that this is the average character size, the space occupied by a specific string is always different to the number of characters times the average character size, except when using a monospaced font like Courier.
Usually for common strings this size is smaller than the actual size, so it is a good practice to leave more room than expected if you use the SIZE attribute.
For smaller font sizes this difference is more noticeable than for larger font sizes.

When this attribute is changed, the RASTERSIZE+ attribute is automatically updated.

SIZE depends on FONT, so when FONT is changed and SIZE is set, then RASTERSIZE+ is also updated.

The average character size of the current FONT can be obtained from the CHARSIZE attribute.

To obtain the last computed Natural size of the element in pixels, use the read-only attribute NATURALSIZE. (Since 3.6)

To obtain the User size of the element in pixels after it is mapped, use the attribute USERSIZE. (Since 3.12)

A User size of "0x0" can be set, it can also be set using NULL. If both values are 0 then NULL is returned.

If you wish to use the User size only as an initial size, change this attribute to NULL after the control is mapped, the returned size in IupGetAttribute will still be the Current size.

The element is NOT immediately repositioned. Call IupRefresh to update the dialog layout.

IupMap also updates the dialog layout even if it is already mapped, so calling it or calling IupShow, IupShowXY or IupPopup (they all call IupMap) will also update the dialog layout.

See the Layout Guide for mode details on sizes.

Affects: All, except menus.

See Also: FONT, RASTERSIZE+, IupRefresh
THEME
NTHEME
(since 3.26) Applies a set of attributes to a control. The THEME attribute in inheritable and the NTHEME attribute is NOT inheritable.

Value: Name of an IupUser element that contains the attributes.
The name is associated in C using IupSetHandle.
The name association must be done before setting the attribute.

Notes
All attributes in the theme must be strings.

Only attributes that are registered in the element will receive its theme value.

Attributes that are registered as not being strings, read-only, write-only or callbacks will NOT be applied.

The theme can contain an specialized sub-theme for the element class.
The element class name will be used with a "IUP" prefix to identify the sub-theme.
For instance, if the element is a label, then an attribute called "IUPLABEL" can point to another theme name to be applied at the element additionally to the already applied attributes.

The global attribute DEFAULTTHEME can be applied to all elements during creation.

Affects: All controls.

See Also: IupUser
TIP (non inheritable) Text to be shown when the mouse lies over the element.

Value: Text.

Additional Tip Attributes: These attributes affect the TIP display.

TIPBALLOON [Windows Only]: The tip window will have the appearance of a cartoon "balloon" with rounded corners and a stem pointing to the item. Default: NO.

TIPBALLOONTITLE [Windows Only]: When using the balloon format, the tip can also has a title in a separate area.

TIPBALLOONTITLEICON [Windows Only]: When using the balloon format, the tip can also has a pre-defined icon in the title area.
Values can be:
"0" - No icon (default)
"1" - Info icon
"2" - Warning icon
"3" - Error Icon

TIPBGCOLOR [Windows and Motif Only]: The tip background color. Default: "255 255 225" (Light Yellow)

TIPDELAY [Windows and Motif Only]: Time the tip will remain visible. Default: "5000". In Windows the maximum value is 32767 milliseconds.

TIPFGCOLOR [Windows and Motif Only]: The tip text color. Default: "0 0 0" (Black)

TIPFONT [Windows and Motif Only]: The font for the tip text. If not defined the font used for the text is the same as the FONT attribute for the element.
If the value is SYSTEM then, no font is selected and the default system font for the tip will be used.

TIPICON [GTK only]: name of an image to be displayed in the TIP. See IupImage. (GTK 2.12)

TIPMARKUP [GTK only]: allows the tip string to contains Pango markup commands. Can be "YES" or "NO". Default: "NO". Must be set before setting the TIP attribute. (GTK 2.12)

TIPRECT (non inheritable): Specifies a rectangle inside the element where the tip will be activated. Format: "%d %d %d %d"="x1 y1 x2 y2". Default: all the element area. (GTK 2.12)

TIPVISIBLE: Shows or hides the tip under the mouse cursor. Use values "YES" or "NO".
In GTK will only trigger the tip state, the given value will be ignored. Returns the current visible state. (GTK 2.12) (get since 3.5)

Additional Tip Callbacks (since 3.5)

TIPS_CB: Action before a tip is displayed.

functiontiops_cb(Ihandle ih, integer x, y)
ih: identifier of the element that activated the event.
x, y: cursor position relative to the top-left corner of the element

Affects: All controls that have visual representation, except menus.
TITLE+ (non inheritable) Element’s title.
It is often used to modify some static text of the element (which cannot be changed by the user).

Value: Text.

Default: ""

Notes
The '\n' character usually is accepted for line change (except for menus).

The "&" character can be used to define a MNEMONIC, use "&&" to show the "&" character instead of defining a mnemonic.

If a mnemonic is defined then the character relative to it is underlined and a key is associated so that when pressed together with the Alt key activates the control.

In GTk, if you define a mnemonic using "&" and the string has an underscore, then make sure that the mnemonic comes before the underscore.

In GTK, if the MARKUP attribute is defined then the title string can contains pango markup commands. Works only if a mnemonic is NOT defined in the title. Not valid for menus.

Note that an IupRefresh() may be required after changing the title text, for all characters to be shown.

Affects: All elements with an associated text.

See Also: FONT
VISIBLE Shows or hides the element.

Value: "YES" (visible), "NO" (hidden). Default: "YES"

Notes: An interface element is only visible if its native parent is also visible.

Affects: All controls that have visual representation, except menus.
WID (read-only) (non inheritable) Element identifier in the native interface system.

Value: In Motif, returns the Widget handle.

In Windows, returns the HWND handle.

In GTK, return the GtkWidget* handle.

Notes: Verification-only attribute, available after the control is mapped.

If the control has not been mapped, NULL is returned. For elements that do not have a native representation, (void *)(-1) is returned.

Affects: All.
ZORDER (write-only) (non inheritable) Change the ZORDER of a dialog or control. It is commonly used for dialogs, but it can be used to control the z-order of controls in a dialog.

Value: Can be "TOP" or "BOTTOM".

Affects: All controls that have visual representation.
FLATSCROLLBAR Complementary attributes when a flat scrollbar is used (a drawn scrollbar). All non inheritable.

Used in IupFlatScrollBox, IupFlatList, IupFlatTree and in IupMatrix when FLATSCROLLBAR=Yes is defined.

When SHOWFLOATING=Yes the natural size of the IupMatrix is reduced because it will not include the scrollbars area.
But notice that when vertically scrolling the last column or horizontally scrolling the last line the visibility or the cells are reduced because the scrollbar is show above the cells.

The flat scrollbar does not support the XMIN nor YMIN attributes. They are considered to be 0 always.
The XAUTOHIDE and YAUTOHIDE are considered to be YES always.

Also, all numeric attributes are integer numbers.
SB_BACKCOLOR color used as background for the scrollbar. By default it will inherit from BGCOLOR.
SB_FORECOLOR handler and arrow color. Default: "220 220 220". Used instead of FGCOLOR to avoid inheritance problems.
SB_HIGHCOLOR handler and arrow color when highlight. Default: "132 132 132".
SB_PRESSCOLOR handler and arrow color when pressed. Default: "96 96 96".
SCROLLBARSIZE The width of the vertical scrollbar or the height of the horizontal scrollbar. Default: 15.
SHOWARROWS Allow to show or hide the arrows. Default: Yes.
SHOWFLOATING the scrollbar is shown only when used, over the space it occupied.
Move the mouse over the scrollbar area to show the scrollbars.
They are automatically hidden after not being used by the time defined in FLOATINGDELAY.
SHOWTRANSPARENT This makes the flat scrollbar semi transparent and only interactive trough its handler.
It implies in SHOWARROWS=NO and SHOWFLATING=Yes. (since 3.26)
FLOATINGDELAY time to hide the scrollbar when SHOWFLOATING=Yes in milliseconds. Default: 2000.
ARROWIMAGES replace the drawn arrows by the following images.
SB_IMAGELEFT,
SB_IMAGERIGHT,
SB_IMAGETOP,
SB_IMAGEBOTTOM
Arrow image name (the attribute is relative to where the arrow is pointing).
Use IupSetHandle or IupSetAttributeHandle to associate an image to a name. See also IupImage.
IMPORTANT = all images must be square with side equals to SCROLLBARSIZE.
SB_IMAGE*HIGHLIGHT Arrow image name of the element in highlight state. If it is not defined then the IMAGE* is used.
SB_IMAGE*INACTIVE Arrow image name of the element when inactive.
If it is not defined then the IMAGE* is used and its colors will be replaced by a modified version creating the disabled effect.
SB_IMAGE*PRESS Arrow image name of the element in pressed state. If it is not defined then the IMAGE* is used.