MxStyle

## MxStyle MxStyle — a data store for style properties |

## Synopsis

                        MxStylable;
                        MxStylableIface;
    enum                MxStyleError;
    struct              MxStyle;
    MxStyle *           mx_style_get_default                (void);
    MxStyle *           mx_style_new                        (void);
    gboolean            mx_style_load_from_file             (MxStyle *style,
                                                             const gchar *filename,
                                                             GError **error);
    void                mx_style_get_property               (MxStyle *style,
                                                             MxStylable *stylable,
                                                             GParamSpec *pspec,
                                                             GValue *value);
    void                mx_style_get                        (MxStyle *style,
                                                             MxStylable *stylable,
                                                             const gchar *first_property_name,
                                                             ...);
    void                mx_style_get_valist                 (MxStyle *style,
                                                             MxStylable *stylable,
                                                             const gchar *first_property_name,
                                                             va_list va_args);

## Object Hierarchy

      GInterface
       +----MxStylable

      GObject
       +----MxStyle

## Known Implementations

MxStylable is implemented by MxBin, MxBoxLayout, MxButton, MxComboBox, MxDeformBowTie, MxDeformPageTurn, MxDeformTexture, MxDeformWaves, MxEntry, MxExpander, MxFloatingWidget, MxFrame, MxGrid, MxIcon, MxItemView, MxLabel, MxListView, MxMenu, MxNotebook, MxPathBar, MxProgressBar, MxScrollBar, MxScrollView, MxSlider, MxTable, MxToggle, MxToolbar, MxTooltip, MxViewport and MxWidget.

## Properties

      "style"                    MxStyle*              : Read / Write
      "style-class"              gchar*                : Read / Write
      "style-pseudo-class"       gchar*                : Read / Write

## Signals

      "style-changed"                                  : Run First
      "changed"                                        : Run Last

## Description

MxStyle is a property data store that can read properties from a style sheet. It is queried with objects that implement the MxStylable interface.

## Details

### MxStylable

    typedef struct _MxStylable MxStylable;

This is an opaque structure whose members cannot be directly accessed.

### MxStylableIface

    typedef struct {
      GTypeInterface g_iface;

      /* virtual functions */
      MxStyle *  (* get_style) (MxStylable *stylable);
      void       (* set_style) (MxStylable *stylable,
                                MxStyle    *style);

      G_CONST_RETURN gchar* (* get_style_class) (MxStylable  *stylable);
      void                  (* set_style_class) (MxStylable  *stylable,
                                                 const gchar *style_class);

      G_CONST_RETURN gchar* (* get_style_pseudo_class) (MxStylable  *stylable);
      void                  (* set_style_pseudo_class) (MxStylable  *stylable,
                                                        const gchar *style_class);

      /* context virtual functions */

      /* signals, not vfuncs */
    #if 0
      void (* style_notify)     (MxStylable *stylable,
                                 GParamSpec *pspec);
    #endif
      void (* style_changed)    (MxStylable *stylable, MxStyleChangedFlags flags);
    } MxStylableIface;

### enum MxStyleError

    typedef enum { /*< prefix=MX_STYLE_ERROR >*/
      MX_STYLE_ERROR_INVALID_FILE
    } MxStyleError;

### struct MxStyle

    struct MxStyle;

The contents of this structure is private and should only be accessed using the provided API.

### mx_style_get_default ()

    MxStyle *           mx_style_get_default                (void);

Return the default MxStyle object. This includes the current theme (if any).

Returns : | a MxStyle object. This must not be freed or unref'd by applications. [transfer none]

### mx_style_new ()

    MxStyle *           mx_style_new                        (void);

Creates a new MxStyle object. This must be freed using g_object_unref when no longer required.

Returns : | a newly allocated MxStyle

### mx_style_load_from_file ()

    gboolean            mx_style_load_from_file             (MxStyle *style,
                                                             const gchar *filename,
                                                             GError **error);

Load style information from the specified file.

`style` : | a MxStyle
`filename` : | filename of the style sheet to load
`error` : | a GError or NULL
Returns : | TRUE if the style information was loaded successfully. Returns FALSE on error.

### mx_style_get_property ()

    void                mx_style_get_property               (MxStyle *style,
                                                             MxStylable *stylable,
                                                             GParamSpec *pspec,
                                                             GValue *value);

Requests the property described in `pspec` for the specified stylable

`style` : | the style data store object
`stylable` : | a stylable to retreive the data for
`pspec` : | a GParamSpec describing the property required
`value` : | a GValue to place the return value in. [out]

### mx_style_get ()

    void                mx_style_get                        (MxStyle *style,
                                                             MxStylable *stylable,
                                                             const gchar *first_property_name,
                                                             ...);

Gets the style properties for `stylable` from `style`.

In general, a copy is made of the property contents and the caller is responsible for freeing the memory in the appropriate manner for the property type.

`style` : | a MxStyle
`stylable` : | a MxStylable
`first_property_name` : | name of the first property to get
`...` : | return location for the first property, followed optionally by more name/return location pairs, followed by `NULL`

### mx_style_get_valist ()

    void                mx_style_get_valist                 (MxStyle *style,
                                                             MxStylable *stylable,
                                                             const gchar *first_property_name,
                                                             va_list va_args);

Gets the style properties for `stylable` from `style`.

Please refer to `mx_style_get()` for further information.

`style` : | a MxStyle
`stylable` : | a MxStylable
`first_property_name` : | name of the first property to get
`va_args` : | return location for the first property, followed optionally by more name/return location pairs, followed by `NULL`

## Property Details

### The `"style"` property

      "style"                    MxStyle*              : Read / Write

A style object.

### The `"style-class"` property

      "style-class"              gchar*                : Read / Write

String representation of the item's class.

Default value: ""

### The `"style-pseudo-class"` property

      "style-pseudo-class"       gchar*                : Read / Write

Pseudo class, such as current state.

Default value: ""

## Signal Details

### The `"style-changed"` signal

    void                user_function                      (MxStylable         *stylable,
                                                            MxStyleChangedFlags flags,
                                                            gpointer            user_data)      : Run First

The ::style-changed signal is emitted each time one of the style properties have changed.

`stylable` : | the MxStylable that received the signal
`flags` : | the MxStyleChangedFlags associated with the signal
`user_data` : | user data set when the signal handler was connected.

### The `"changed"` signal

    void                user_function                      (MxStyle *arg0,
                                                            gpointer user_data)      : Run Last

Indicates that the style data has changed in some way. For example, a new stylesheet may have been loaded.

`user_data` : | user data set when the signal handler was connected.