+/**
+ * GtkPackDirection:
+ * @GTK_PACK_DIRECTION_LTR: Widgets are packed left-to-right
+ * @GTK_PACK_DIRECTION_RTL: Widgets are packed right-to-left
+ * @GTK_PACK_DIRECTION_TTB: Widgets are packed top-to-bottom
+ * @GTK_PACK_DIRECTION_BTT: Widgets are packed bottom-to-top
+ *
+ * Determines how widgets should be packed inside menubars
+ * and menuitems contained in menubars.
+ */
+typedef enum
+{
+ GTK_PACK_DIRECTION_LTR,
+ GTK_PACK_DIRECTION_RTL,
+ GTK_PACK_DIRECTION_TTB,
+ GTK_PACK_DIRECTION_BTT
+} GtkPackDirection;
+
+typedef enum
+{
+ GTK_PRINT_PAGES_ALL,
+ GTK_PRINT_PAGES_CURRENT,
+ GTK_PRINT_PAGES_RANGES,
+ GTK_PRINT_PAGES_SELECTION
+} GtkPrintPages;
+
+typedef enum
+{
+ GTK_PAGE_SET_ALL,
+ GTK_PAGE_SET_EVEN,
+ GTK_PAGE_SET_ODD
+} GtkPageSet;
+
+/**
+ * GtkNumberUpLayout:
+ * @GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM: <inlinegraphic valign="middle" fileref="layout-lrtb.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP: <inlinegraphic valign="middle" fileref="layout-lrbt.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM: <inlinegraphic valign="middle" fileref="layout-rltb.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP: <inlinegraphic valign="middle" fileref="layout-rlbt.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT: <inlinegraphic valign="middle" fileref="layout-tblr.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT: <inlinegraphic valign="middle" fileref="layout-tbrl.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT: <inlinegraphic valign="middle" fileref="layout-btlr.png" format="PNG"></inlinegraphic>
+ * @GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT: <inlinegraphic valign="middle" fileref="layout-btrl.png" format="PNG"></inlinegraphic>
+ *
+ * Used to determine the layout of pages on a sheet when printing
+ * multiple pages per sheet.
+ */
+typedef enum
+{
+ GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM, /*< nick=lrtb >*/
+ GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP, /*< nick=lrbt >*/
+ GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM, /*< nick=rltb >*/
+ GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP, /*< nick=rlbt >*/
+ GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT, /*< nick=tblr >*/
+ GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT, /*< nick=tbrl >*/
+ GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT, /*< nick=btlr >*/
+ GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT /*< nick=btrl >*/
+} GtkNumberUpLayout;
+
+typedef enum
+{
+ GTK_PAGE_ORIENTATION_PORTRAIT,
+ GTK_PAGE_ORIENTATION_LANDSCAPE,
+ GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT,
+ GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE
+} GtkPageOrientation;
+
+typedef enum
+{
+ GTK_PRINT_QUALITY_LOW,
+ GTK_PRINT_QUALITY_NORMAL,
+ GTK_PRINT_QUALITY_HIGH,
+ GTK_PRINT_QUALITY_DRAFT
+} GtkPrintQuality;
+
+typedef enum
+{
+ GTK_PRINT_DUPLEX_SIMPLEX,
+ GTK_PRINT_DUPLEX_HORIZONTAL,
+ GTK_PRINT_DUPLEX_VERTICAL
+} GtkPrintDuplex;
+
+
+typedef enum
+{
+ GTK_UNIT_NONE,
+ GTK_UNIT_POINTS,
+ GTK_UNIT_INCH,
+ GTK_UNIT_MM
+} GtkUnit;
+
+#define GTK_UNIT_PIXEL GTK_UNIT_NONE
+
+/**
+ * GtkTreeViewGridLines:
+ * @GTK_TREE_VIEW_GRID_LINES_NONE: No grid lines.
+ * @GTK_TREE_VIEW_GRID_LINES_HORIZONTAL: Horizontal grid lines.
+ * @GTK_TREE_VIEW_GRID_LINES_VERTICAL: Vertical grid lines.
+ * @GTK_TREE_VIEW_GRID_LINES_BOTH: Horizontal and vertical grid lines.
+ *
+ * Used to indicate which grid lines to draw in a tree view.
+ */
+typedef enum
+{
+ GTK_TREE_VIEW_GRID_LINES_NONE,
+ GTK_TREE_VIEW_GRID_LINES_HORIZONTAL,
+ GTK_TREE_VIEW_GRID_LINES_VERTICAL,
+ GTK_TREE_VIEW_GRID_LINES_BOTH
+} GtkTreeViewGridLines;
+
+/**
+ * GtkDragResult:
+ * @GTK_DRAG_RESULT_SUCCESS: The drag operation was successful.
+ * @GTK_DRAG_RESULT_NO_TARGET: No suitable drag target.
+ * @GTK_DRAG_RESULT_USER_CANCELLED: The user cancelled the drag operation.
+ * @GTK_DRAG_RESULT_TIMEOUT_EXPIRED: The drag operation timed out.
+ * @GTK_DRAG_RESULT_GRAB_BROKEN: The pointer or keyboard grab used
+ * for the drag operation was broken.
+ * @GTK_DRAG_RESULT_ERROR: The drag operation failed due to some
+ * unspecified error.
+ *
+ * Gives an indication why a drag operation failed.
+ * The value can by obtained by connecting to the
+ * #GtkWidget::drag-failed signal.
+ */
+typedef enum
+{
+ GTK_DRAG_RESULT_SUCCESS,
+ GTK_DRAG_RESULT_NO_TARGET,
+ GTK_DRAG_RESULT_USER_CANCELLED,
+ GTK_DRAG_RESULT_TIMEOUT_EXPIRED,
+ GTK_DRAG_RESULT_GRAB_BROKEN,
+ GTK_DRAG_RESULT_ERROR
+} GtkDragResult;
+
+/**
+ * GtkSizeGroupMode:
+ * @GTK_SIZE_GROUP_NONE: group has no effect
+ * @GTK_SIZE_GROUP_HORIZONTAL: group affects horizontal requisition
+ * @GTK_SIZE_GROUP_VERTICAL: group affects vertical requisition
+ * @GTK_SIZE_GROUP_BOTH: group affects both horizontal and vertical requisition
+ *
+ * The mode of the size group determines the directions in which the size
+ * group affects the requested sizes of its component widgets.
+ **/
+typedef enum {
+ GTK_SIZE_GROUP_NONE,
+ GTK_SIZE_GROUP_HORIZONTAL,
+ GTK_SIZE_GROUP_VERTICAL,
+ GTK_SIZE_GROUP_BOTH
+} GtkSizeGroupMode;
+
+/**
+ * GtkSizeRequestMode:
+ * @GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH: Prefer height-for-width geometry management
+ * @GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT: Prefer width-for-height geometry management
+ * @GTK_SIZE_REQUEST_CONSTANT_SIZE: Don't trade height-for-width or width-for-height
+ *
+ * Specifies a preference for height-for-width or
+ * width-for-height geometry management.
+ */
+typedef enum
+{
+ GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH = 0,
+ GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT,
+ GTK_SIZE_REQUEST_CONSTANT_SIZE
+} GtkSizeRequestMode;
+
+/**
+ * GtkScrollablePolicy:
+ * @GTK_SCROLL_MINIMUM: Scrollable adjustments are based on the minimum size
+ * @GTK_SCROLL_NATURAL: Scrollable adjustments are based on the natural size
+ *
+ * Defines the policy to be used in a scrollable widget when updating
+ * the scrolled window adjustments in a given orientation.
+ */
+typedef enum
+{
+ GTK_SCROLL_MINIMUM = 0,
+ GTK_SCROLL_NATURAL
+} GtkScrollablePolicy;
+
+/**
+ * GtkStateFlags:
+ * @GTK_STATE_FLAG_NORMAL: State during normal operation.
+ * @GTK_STATE_FLAG_ACTIVE: Widget is active.
+ * @GTK_STATE_FLAG_PRELIGHT: Widget has a mouse pointer over it.
+ * @GTK_STATE_FLAG_SELECTED: Widget is selected.
+ * @GTK_STATE_FLAG_INSENSITIVE: Widget is insensitive.
+ * @GTK_STATE_FLAG_INCONSISTENT: Widget is inconsistent.
+ * @GTK_STATE_FLAG_FOCUSED: Widget has the keyboard focus.
+ * @GTK_STATE_FLAG_BACKDROP: Widget is in a background toplevel window.
+ * @GTK_STATE_FLAG_DIR_LTR: Widget is in left-to-right text direction. Since 3.8
+ * @GTK_STATE_FLAG_DIR_RTL: Widget is in right-to-left text direction. Since 3.8
+ *
+ * Describes a widget state. Widget states are used to match the widget
+ * against CSS pseudo-classes. Note that GTK extends the regular CSS
+ * classes and sometimes uses different names.
+ */
+typedef enum
+{
+ GTK_STATE_FLAG_NORMAL = 0,
+ GTK_STATE_FLAG_ACTIVE = 1 << 0,
+ GTK_STATE_FLAG_PRELIGHT = 1 << 1,
+ GTK_STATE_FLAG_SELECTED = 1 << 2,
+ GTK_STATE_FLAG_INSENSITIVE = 1 << 3,
+ GTK_STATE_FLAG_INCONSISTENT = 1 << 4,
+ GTK_STATE_FLAG_FOCUSED = 1 << 5,
+ GTK_STATE_FLAG_BACKDROP = 1 << 6,
+ GTK_STATE_FLAG_DIR_LTR = 1 << 7,
+ GTK_STATE_FLAG_DIR_RTL = 1 << 8
+} GtkStateFlags;
+
+/**
+ * GtkRegionFlags:
+ * @GTK_REGION_EVEN: Region has an even number within a set.
+ * @GTK_REGION_ODD: Region has an odd number within a set.
+ * @GTK_REGION_FIRST: Region is the first one within a set.
+ * @GTK_REGION_LAST: Region is the last one within a set.
+ * @GTK_REGION_ONLY: Region is the only one within a set.
+ * @GTK_REGION_SORTED: Region is part of a sorted area.
+ *
+ * Describes a region within a widget.
+ */
+typedef enum {
+ GTK_REGION_EVEN = 1 << 0,
+ GTK_REGION_ODD = 1 << 1,
+ GTK_REGION_FIRST = 1 << 2,
+ GTK_REGION_LAST = 1 << 3,
+ GTK_REGION_ONLY = 1 << 4,
+ GTK_REGION_SORTED = 1 << 5
+} GtkRegionFlags;
+
+/**
+ * GtkJunctionSides:
+ * @GTK_JUNCTION_NONE: No junctions.
+ * @GTK_JUNCTION_CORNER_TOPLEFT: Element connects on the top-left corner.
+ * @GTK_JUNCTION_CORNER_TOPRIGHT: Element connects on the top-right corner.
+ * @GTK_JUNCTION_CORNER_BOTTOMLEFT: Element connects on the bottom-left corner.
+ * @GTK_JUNCTION_CORNER_BOTTOMRIGHT: Element connects on the bottom-right corner.
+ * @GTK_JUNCTION_TOP: Element connects on the top side.
+ * @GTK_JUNCTION_BOTTOM: Element connects on the bottom side.
+ * @GTK_JUNCTION_LEFT: Element connects on the left side.
+ * @GTK_JUNCTION_RIGHT: Element connects on the right side.
+ *
+ * Describes how a rendered element connects to adjacent elements.
+ */
+typedef enum {
+ GTK_JUNCTION_NONE = 0,
+ GTK_JUNCTION_CORNER_TOPLEFT = 1 << 0,
+ GTK_JUNCTION_CORNER_TOPRIGHT = 1 << 1,
+ GTK_JUNCTION_CORNER_BOTTOMLEFT = 1 << 2,
+ GTK_JUNCTION_CORNER_BOTTOMRIGHT = 1 << 3,
+ GTK_JUNCTION_TOP = (GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_TOPRIGHT),
+ GTK_JUNCTION_BOTTOM = (GTK_JUNCTION_CORNER_BOTTOMLEFT | GTK_JUNCTION_CORNER_BOTTOMRIGHT),
+ GTK_JUNCTION_LEFT = (GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_BOTTOMLEFT),
+ GTK_JUNCTION_RIGHT = (GTK_JUNCTION_CORNER_TOPRIGHT | GTK_JUNCTION_CORNER_BOTTOMRIGHT)
+} GtkJunctionSides;
+
+/**
+ * GtkBorderStyle:
+ * @GTK_BORDER_STYLE_NONE: No visible border
+ * @GTK_BORDER_STYLE_SOLID: A single line segment
+ * @GTK_BORDER_STYLE_INSET: Looks as if the content is sunken into the canvas
+ * @GTK_BORDER_STYLE_OUTSET: Looks as if the content is coming out of the canvas
+ * @GTK_BORDER_STYLE_HIDDEN: Same as @GTK_BORDER_STYLE_NONE
+ * @GTK_BORDER_STYLE_DOTTED: A series of round dots
+ * @GTK_BORDER_STYLE_DASHED: A series of square-ended dashes
+ * @GTK_BORDER_STYLE_DOUBLE: Two parallel lines with some space between them
+ * @GTK_BORDER_STYLE_GROOVE: Looks as if it were carved in the canvas
+ * @GTK_BORDER_STYLE_RIDGE: Looks as if it were coming out of the canvas
+ *
+ * Describes how the border of a UI element should be rendered.
+ */
+typedef enum {
+ GTK_BORDER_STYLE_NONE,
+ GTK_BORDER_STYLE_SOLID,
+ GTK_BORDER_STYLE_INSET,
+ GTK_BORDER_STYLE_OUTSET,
+ GTK_BORDER_STYLE_HIDDEN,
+ GTK_BORDER_STYLE_DOTTED,
+ GTK_BORDER_STYLE_DASHED,
+ GTK_BORDER_STYLE_DOUBLE,
+ GTK_BORDER_STYLE_GROOVE,
+ GTK_BORDER_STYLE_RIDGE
+} GtkBorderStyle;