2017-06-20 19:02:13 +00:00
|
|
|
#ifndef INCLUDE_ROFI_TYPES_H
|
|
|
|
#define INCLUDE_ROFI_TYPES_H
|
|
|
|
|
2017-08-17 20:45:35 +00:00
|
|
|
#include <glib.h>
|
2017-11-21 15:04:59 +00:00
|
|
|
G_BEGIN_DECLS
|
2017-08-17 20:45:35 +00:00
|
|
|
|
2017-08-17 17:04:01 +00:00
|
|
|
/**
|
|
|
|
* Type of property
|
|
|
|
*/
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
/** Integer */
|
|
|
|
P_INTEGER,
|
|
|
|
/** Double */
|
|
|
|
P_DOUBLE,
|
|
|
|
/** String */
|
|
|
|
P_STRING,
|
2020-05-17 12:50:38 +00:00
|
|
|
/** Character */
|
|
|
|
P_CHAR,
|
2017-08-17 17:04:01 +00:00
|
|
|
/** Boolean */
|
|
|
|
P_BOOLEAN,
|
|
|
|
/** Color */
|
|
|
|
P_COLOR,
|
|
|
|
/** RofiPadding */
|
|
|
|
P_PADDING,
|
|
|
|
/** Link to global setting */
|
|
|
|
P_LINK,
|
|
|
|
/** Position */
|
|
|
|
P_POSITION,
|
|
|
|
/** Highlight */
|
|
|
|
P_HIGHLIGHT,
|
|
|
|
/** List */
|
|
|
|
P_LIST,
|
|
|
|
/** Orientation */
|
|
|
|
P_ORIENTATION,
|
2017-09-06 08:03:44 +00:00
|
|
|
/** Inherit */
|
|
|
|
P_INHERIT,
|
2017-08-17 17:04:01 +00:00
|
|
|
/** Number of types. */
|
|
|
|
P_NUM_TYPES,
|
|
|
|
} PropertyType;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This array maps PropertyType to a user-readable name.
|
|
|
|
* It is important this is kept in sync.
|
|
|
|
*/
|
|
|
|
extern const char * const PropertyTypeName[P_NUM_TYPES];
|
2017-06-20 19:02:13 +00:00
|
|
|
|
2017-08-17 20:45:35 +00:00
|
|
|
/** Style of text highlight */
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
/** no highlight */
|
|
|
|
ROFI_HL_NONE = 0,
|
|
|
|
/** bold */
|
|
|
|
ROFI_HL_BOLD = 1,
|
|
|
|
/** underline */
|
|
|
|
ROFI_HL_UNDERLINE = 2,
|
|
|
|
/** strikethrough */
|
|
|
|
ROFI_HL_STRIKETHROUGH = 16,
|
|
|
|
/** small caps */
|
|
|
|
ROFI_HL_SMALL_CAPS = 32,
|
|
|
|
/** italic */
|
|
|
|
ROFI_HL_ITALIC = 4,
|
|
|
|
/** color */
|
|
|
|
ROFI_HL_COLOR = 8
|
|
|
|
} RofiHighlightStyle;
|
|
|
|
|
|
|
|
/** Style of line */
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
/** Solid line */
|
|
|
|
ROFI_HL_SOLID,
|
|
|
|
/** Dashed line */
|
|
|
|
ROFI_HL_DASH
|
|
|
|
} RofiLineStyle;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Distance unit type.
|
|
|
|
*/
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
/** PixelWidth in pixels. */
|
|
|
|
ROFI_PU_PX,
|
2020-06-09 20:19:43 +00:00
|
|
|
/** PixelWidth in millimeters. */
|
|
|
|
ROFI_PU_MM,
|
2017-08-17 20:45:35 +00:00
|
|
|
/** PixelWidth in EM. */
|
|
|
|
ROFI_PU_EM,
|
|
|
|
/** PixelWidget in percentage */
|
|
|
|
ROFI_PU_PERCENT,
|
2017-09-05 11:52:21 +00:00
|
|
|
/** PixelWidth in CH. */
|
|
|
|
ROFI_PU_CH,
|
2017-08-17 20:45:35 +00:00
|
|
|
} RofiPixelUnit;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Structure representing a distance.
|
|
|
|
*/
|
2020-04-24 17:54:08 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ROFI_DISTANCE_MODIFIER_NONE,
|
|
|
|
ROFI_DISTANCE_MODIFIER_ADD,
|
|
|
|
ROFI_DISTANCE_MODIFIER_SUBTRACT,
|
|
|
|
ROFI_DISTANCE_MODIFIER_DIVIDE,
|
|
|
|
ROFI_DISTANCE_MODIFIER_MULTIPLY,
|
|
|
|
ROFI_DISTANCE_MODIFIER_MODULO,
|
|
|
|
ROFI_DISTANCE_MODIFIER_GROUP,
|
2020-09-14 18:34:39 +00:00
|
|
|
ROFI_DISTANCE_MODIFIER_MIN,
|
|
|
|
ROFI_DISTANCE_MODIFIER_MAX,
|
2020-04-24 17:54:08 +00:00
|
|
|
} RofiDistanceModifier;
|
|
|
|
|
2020-08-28 14:41:59 +00:00
|
|
|
typedef struct RofiDistanceUnit
|
2017-08-17 20:45:35 +00:00
|
|
|
{
|
|
|
|
/** Distance */
|
2020-08-28 14:41:59 +00:00
|
|
|
double distance;
|
2017-08-17 20:45:35 +00:00
|
|
|
/** Unit type of the distance */
|
2020-08-28 14:41:59 +00:00
|
|
|
RofiPixelUnit type;
|
2020-04-24 17:54:08 +00:00
|
|
|
|
|
|
|
/** Type */
|
2020-08-28 14:41:59 +00:00
|
|
|
RofiDistanceModifier modtype;
|
2020-04-24 17:54:08 +00:00
|
|
|
|
|
|
|
/** Modifier */
|
|
|
|
struct RofiDistanceUnit *left;
|
|
|
|
|
|
|
|
/** Modifier */
|
|
|
|
struct RofiDistanceUnit *right;
|
|
|
|
} RofiDistanceUnit;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/** Base */
|
|
|
|
RofiDistanceUnit base;
|
2017-08-17 20:45:35 +00:00
|
|
|
/** Style of the line (optional)*/
|
2020-08-28 14:41:59 +00:00
|
|
|
RofiLineStyle style;
|
2017-08-17 20:45:35 +00:00
|
|
|
} RofiDistance;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Type of orientation.
|
|
|
|
*/
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ROFI_ORIENTATION_VERTICAL,
|
|
|
|
ROFI_ORIENTATION_HORIZONTAL
|
|
|
|
} RofiOrientation;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represent the color in theme.
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/** red channel */
|
|
|
|
double red;
|
|
|
|
/** green channel */
|
|
|
|
double green;
|
|
|
|
/** blue channel */
|
|
|
|
double blue;
|
|
|
|
/** alpha channel */
|
|
|
|
double alpha;
|
|
|
|
} ThemeColor;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* RofiPadding
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
RofiDistance top;
|
|
|
|
RofiDistance right;
|
|
|
|
RofiDistance bottom;
|
|
|
|
RofiDistance left;
|
|
|
|
} RofiPadding;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Theme highlight.
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/** style to display */
|
|
|
|
RofiHighlightStyle style;
|
|
|
|
/** Color */
|
|
|
|
ThemeColor color;
|
|
|
|
} RofiHighlightColorStyle;
|
|
|
|
|
2017-08-18 09:38:54 +00:00
|
|
|
/**
|
|
|
|
* Enumeration indicating location or gravity of window.
|
|
|
|
*
|
|
|
|
* \verbatim WL_NORTH_WEST WL_NORTH WL_NORTH_EAST \endverbatim
|
|
|
|
* \verbatim WL_EAST WL_CENTER WL_EAST \endverbatim
|
|
|
|
* \verbatim WL_SOUTH_WEST WL_SOUTH WL_SOUTH_EAST\endverbatim
|
|
|
|
*
|
|
|
|
* @ingroup CONFIGURATION
|
|
|
|
*/
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
/** Center */
|
|
|
|
WL_CENTER = 0,
|
|
|
|
/** Top middle */
|
|
|
|
WL_NORTH = 1,
|
|
|
|
/** Middle right */
|
|
|
|
WL_EAST = 2,
|
|
|
|
/** Bottom middle */
|
|
|
|
WL_SOUTH = 4,
|
|
|
|
/** Middle left */
|
|
|
|
WL_WEST = 8,
|
|
|
|
/** Left top corner. */
|
|
|
|
WL_NORTH_WEST = WL_NORTH | WL_WEST,
|
|
|
|
/** Top right */
|
|
|
|
WL_NORTH_EAST = WL_NORTH | WL_EAST,
|
|
|
|
/** Bottom right */
|
|
|
|
WL_SOUTH_EAST = WL_SOUTH | WL_EAST,
|
|
|
|
/** Bottom left */
|
|
|
|
WL_SOUTH_WEST = WL_SOUTH | WL_WEST,
|
|
|
|
} WindowLocation;
|
|
|
|
|
2019-01-29 16:56:45 +00:00
|
|
|
typedef union _PropertyValue
|
2017-08-17 20:45:35 +00:00
|
|
|
{
|
|
|
|
/** integer */
|
|
|
|
int i;
|
|
|
|
/** Double */
|
|
|
|
double f;
|
|
|
|
/** String */
|
|
|
|
char *s;
|
2020-05-17 12:50:38 +00:00
|
|
|
/** Character */
|
|
|
|
char c;
|
2017-08-17 20:45:35 +00:00
|
|
|
/** boolean */
|
|
|
|
gboolean b;
|
|
|
|
/** Color */
|
|
|
|
ThemeColor color;
|
|
|
|
/** RofiPadding */
|
|
|
|
RofiPadding padding;
|
|
|
|
/** Reference */
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
/** Name */
|
|
|
|
char *name;
|
|
|
|
/** Cached looked up ref */
|
|
|
|
struct Property *ref;
|
2019-01-29 16:56:45 +00:00
|
|
|
/** Property default */
|
|
|
|
struct Property *def_value;
|
2017-08-17 20:45:35 +00:00
|
|
|
} link;
|
|
|
|
/** Highlight Style */
|
|
|
|
RofiHighlightColorStyle highlight;
|
|
|
|
/** List */
|
|
|
|
GList *list;
|
|
|
|
} PropertyValue;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Property structure.
|
|
|
|
*/
|
|
|
|
typedef struct Property
|
|
|
|
{
|
|
|
|
/** Name of property */
|
|
|
|
char *name;
|
|
|
|
/** Type of property. */
|
|
|
|
PropertyType type;
|
|
|
|
/** Value */
|
|
|
|
PropertyValue value;
|
|
|
|
} Property;
|
|
|
|
|
2017-09-27 18:00:33 +00:00
|
|
|
/**
|
|
|
|
* Structure to hold a range.
|
|
|
|
*/
|
|
|
|
typedef struct rofi_range_pair
|
|
|
|
{
|
2019-07-02 19:27:46 +00:00
|
|
|
int start;
|
|
|
|
int stop;
|
2017-09-27 18:00:33 +00:00
|
|
|
} rofi_range_pair;
|
2017-09-29 06:32:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Internal structure for matching.
|
|
|
|
*/
|
2017-10-05 15:45:50 +00:00
|
|
|
typedef struct rofi_int_matcher_t
|
|
|
|
{
|
2017-09-29 06:32:09 +00:00
|
|
|
GRegex *regex;
|
|
|
|
gboolean invert;
|
|
|
|
} rofi_int_matcher;
|
|
|
|
|
2018-06-09 17:13:57 +00:00
|
|
|
/**
|
|
|
|
* Structure with data to process by each worker thread.
|
|
|
|
* TODO: Make this more generic wrapper.
|
|
|
|
*/
|
|
|
|
typedef struct _thread_state
|
|
|
|
{
|
|
|
|
void ( *callback )( struct _thread_state *t, gpointer data );
|
|
|
|
} thread_state;
|
|
|
|
|
|
|
|
extern GThreadPool *tpool;
|
|
|
|
|
2017-11-21 15:04:59 +00:00
|
|
|
G_END_DECLS
|
2017-06-20 19:02:13 +00:00
|
|
|
#endif // INCLUDE_ROFI_TYPES_H
|