You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
838 lines
28 KiB
838 lines
28 KiB
4 years ago
|
/*
|
||
|
* Compiz configuration system library
|
||
|
*
|
||
|
* Copyright (C) 2007 Dennis Kasprzyk <onestone@beryl-project.org>
|
||
|
* Copyright (C) 2007 Danny Baumann <maniac@beryl-project.org>
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
* License as published by the Free Software Foundation; either
|
||
|
* version 2.1 of the License, or (at your option) any later version.
|
||
|
|
||
|
* This library is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Lesser General Public License for more details.
|
||
|
|
||
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
* License along with this library; if not, write to the Free Software
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef _CSS_H
|
||
|
#define _CSS_H
|
||
|
|
||
|
#define D_NONE 0
|
||
|
#define D_NORMAL 1
|
||
|
#define D_FULL 2
|
||
|
|
||
|
#ifndef DEBUGLEVEL
|
||
|
# define DEBUGLEVEL D_NONE
|
||
|
#endif
|
||
|
#define D(x, fmt, args...) { if (x <= DEBUGLEVEL) printf(fmt, ##args); }
|
||
|
|
||
|
#ifndef Bool
|
||
|
#define Bool int
|
||
|
#endif
|
||
|
|
||
|
#ifndef TRUE
|
||
|
#define TRUE ~0
|
||
|
#endif
|
||
|
|
||
|
#ifndef FALSE
|
||
|
#define FALSE 0
|
||
|
#endif
|
||
|
|
||
|
/**
|
||
|
* list functions:
|
||
|
* for each list there is a set of functions, explained using String as example
|
||
|
*
|
||
|
* ccsStringListAppend (list, item)
|
||
|
* Adds an item at the end of the list. Returns the new list.
|
||
|
*
|
||
|
* ccsStringListPrepend (list, item)
|
||
|
* Adds an item at the beginning of the list. Returns the new list.
|
||
|
*
|
||
|
* ccsStringListInsert (list, item, position)
|
||
|
* Adds an item at a given position. Position is 0-based. If position is
|
||
|
* larger than the amount of items in the list, the item is inserted at the
|
||
|
* end of the list. Returns the new list.
|
||
|
*
|
||
|
* ccsStringListInsertBefore (list, sibling, item)
|
||
|
* Inserts item before sibling into the list. If sibling is no list member,
|
||
|
* item is inserted at the end. Returns the new list.
|
||
|
*
|
||
|
* ccsStringListLength (list)
|
||
|
* Returns the amount of items in list.
|
||
|
*
|
||
|
* ccsStringListFind (list, item)
|
||
|
* Finds and returns an item matching <item>. If nothing is found, returns NULL.
|
||
|
*
|
||
|
* ccsStringListGetItem (list, index)
|
||
|
* Returns the list item at position <index>. If index is larger than the
|
||
|
* amount of items in the list, returns NULL.
|
||
|
*
|
||
|
* ccsStringListRemove (list, item, freeObj)
|
||
|
* Removes item from the list. If freeObj is TRUE, also frees the data item.
|
||
|
* Returns the new list.
|
||
|
*
|
||
|
* ccsStringListFree (list, freeObj)
|
||
|
* Frees the complete list. If freeObj is TRUE, also frees the data items.
|
||
|
* Returns the new list (NULL).
|
||
|
*/
|
||
|
#define CCSLIST_HDR(type,dtype) \
|
||
|
typedef struct _CCS##type##List * CCS##type##List;\
|
||
|
struct _CCS##type##List \
|
||
|
{ \
|
||
|
dtype * data; \
|
||
|
CCS##type##List next; \
|
||
|
}; \
|
||
|
CCS##type##List ccs##type##ListAppend (CCS##type##List list, dtype *data); \
|
||
|
CCS##type##List ccs##type##ListPrepend (CCS##type##List list, dtype *data); \
|
||
|
CCS##type##List ccs##type##ListInsert (CCS##type##List list, dtype *data, int position); \
|
||
|
CCS##type##List ccs##type##ListInsertBefore (CCS##type##List list, CCS##type##List sibling, dtype *data); \
|
||
|
unsigned int ccs##type##ListLength (CCS##type##List list); \
|
||
|
CCS##type##List ccs##type##ListFind (CCS##type##List list, dtype *data); \
|
||
|
CCS##type##List ccs##type##ListGetItem (CCS##type##List list, unsigned int index); \
|
||
|
CCS##type##List ccs##type##ListRemove (CCS##type##List list, dtype *data, Bool freeObj); \
|
||
|
CCS##type##List ccs##type##ListFree (CCS##type##List list, Bool freeObj);
|
||
|
|
||
|
typedef struct _CCSContext CCSContext;
|
||
|
typedef struct _CCSPlugin CCSPlugin;
|
||
|
typedef struct _CCSSetting CCSSetting;
|
||
|
typedef struct _CCSGroup CCSGroup;
|
||
|
typedef struct _CCSSubGroup CCSSubGroup;
|
||
|
typedef struct _CCSPluginCategory CCSPluginCategory;
|
||
|
typedef struct _CCSSettingValue CCSSettingValue;
|
||
|
typedef struct _CCSPluginConflict CCSPluginConflict;
|
||
|
typedef struct _CCSBackendInfo CCSBackendInfo;
|
||
|
typedef struct _CCSIntDesc CCSIntDesc;
|
||
|
typedef struct _CCSStrRestriction CCSStrRestriction;
|
||
|
typedef struct _CCSStrExtension CCSStrExtension;
|
||
|
|
||
|
CCSLIST_HDR (Plugin, CCSPlugin)
|
||
|
CCSLIST_HDR (Setting, CCSSetting)
|
||
|
CCSLIST_HDR (String, char)
|
||
|
CCSLIST_HDR (Group, CCSGroup)
|
||
|
CCSLIST_HDR (SubGroup, CCSSubGroup)
|
||
|
CCSLIST_HDR (SettingValue, CCSSettingValue)
|
||
|
CCSLIST_HDR (PluginConflict, CCSPluginConflict)
|
||
|
CCSLIST_HDR (BackendInfo, CCSBackendInfo)
|
||
|
CCSLIST_HDR (IntDesc, CCSIntDesc)
|
||
|
CCSLIST_HDR (StrRestriction, CCSStrRestriction)
|
||
|
CCSLIST_HDR (StrExtension, CCSStrExtension)
|
||
|
|
||
|
struct _CCSContext
|
||
|
{
|
||
|
CCSPluginList plugins; /* list of plugins settings
|
||
|
were loaded for */
|
||
|
CCSPluginCategory *categories; /* list of plugin categories */
|
||
|
void *privatePtr; /* private pointer that can be used
|
||
|
by the caller */
|
||
|
void *ccsPrivate; /* private pointer for compizconfig
|
||
|
internal usage */
|
||
|
|
||
|
CCSSettingList changedSettings; /* list of settings changed since last
|
||
|
settings write */
|
||
|
|
||
|
unsigned int *screens; /* numbers of the available screens */
|
||
|
unsigned int numScreens; /* number of screens */
|
||
|
};
|
||
|
|
||
|
struct _CCSBackendInfo
|
||
|
{
|
||
|
char *name; /* name of the backend */
|
||
|
char *shortDesc; /* backend's short description */
|
||
|
char *longDesc; /* backend's long description */
|
||
|
Bool integrationSupport; /* does the backend support DE integration? */
|
||
|
Bool profileSupport; /* does the backend support profiles? */
|
||
|
};
|
||
|
|
||
|
struct _CCSPlugin
|
||
|
{
|
||
|
char *name; /* plugin name */
|
||
|
char *shortDesc; /* plugin short description */
|
||
|
char *longDesc; /* plugin long description */
|
||
|
char *hints; /* currently unused */
|
||
|
char *category; /* plugin category name */
|
||
|
|
||
|
CCSStringList loadAfter; /* list of plugin names this plugin needs to
|
||
|
be loaded after */
|
||
|
CCSStringList loadBefore; /* list of plugin names this plugin needs to
|
||
|
be loaded before */
|
||
|
CCSStringList requiresPlugin; /* list of plugin names this plugin
|
||
|
requires */
|
||
|
CCSStringList conflictPlugin; /* list of plugin names this plugin
|
||
|
conflicts with */
|
||
|
CCSStringList conflictFeature; /* list of feature names this plugin
|
||
|
conflicts with */
|
||
|
CCSStringList providesFeature; /* list of feature names this plugin
|
||
|
provides */
|
||
|
CCSStringList requiresFeature; /* list of feature names this plugin
|
||
|
requires */
|
||
|
|
||
|
void *privatePtr; /* private pointer that can be used
|
||
|
by the caller */
|
||
|
CCSContext *context; /* context this plugin belongs to */
|
||
|
|
||
|
void *ccsPrivate; /* private pointer for compizconfig
|
||
|
internal usage */
|
||
|
};
|
||
|
|
||
|
typedef enum _CCSSettingType
|
||
|
{
|
||
|
/* This needs to be in the same order as CompOptionType for consistency */
|
||
|
TypeBool,
|
||
|
TypeInt,
|
||
|
TypeFloat,
|
||
|
TypeString,
|
||
|
TypeColor,
|
||
|
TypeAction,
|
||
|
TypeKey,
|
||
|
TypeButton,
|
||
|
TypeEdge,
|
||
|
TypeBell,
|
||
|
TypeMatch,
|
||
|
TypeList,
|
||
|
TypeNum
|
||
|
} CCSSettingType;
|
||
|
|
||
|
struct _CCSSubGroup
|
||
|
{
|
||
|
char *name; /* sub group name in current locale */
|
||
|
CCSSettingList settings; /* list of settings in this sub group */
|
||
|
};
|
||
|
|
||
|
struct _CCSGroup
|
||
|
{
|
||
|
char *name; /* group name in current locale */
|
||
|
CCSSubGroupList subGroups; /* list of sub groups in this group */
|
||
|
};
|
||
|
|
||
|
typedef enum _CCSPluginConflictType
|
||
|
{
|
||
|
/* produced on plugin activation */
|
||
|
ConflictRequiresPlugin,
|
||
|
ConflictRequiresFeature,
|
||
|
ConflictFeature,
|
||
|
ConflictPlugin,
|
||
|
/* produced on plugin deactivation */
|
||
|
ConflictFeatureNeeded,
|
||
|
ConflictPluginNeeded,
|
||
|
ConflictPluginError,
|
||
|
} CCSPluginConflictType;
|
||
|
|
||
|
struct _CCSPluginConflict
|
||
|
{
|
||
|
char * value; /* item (plugin / feature) name that
|
||
|
caused the conflict */
|
||
|
CCSPluginConflictType type; /* type of the conflict */
|
||
|
CCSPluginList plugins; /* list of conflicting plugins */
|
||
|
};
|
||
|
|
||
|
union _CCSSettingInfo;
|
||
|
|
||
|
struct _CCSIntDesc
|
||
|
{
|
||
|
int value; /* value the description is assigned to */
|
||
|
char *name; /* description */
|
||
|
};
|
||
|
|
||
|
struct _CCSStrRestriction
|
||
|
{
|
||
|
char *value; /* value the restriction is assigned to */
|
||
|
char *name; /* description */
|
||
|
};
|
||
|
|
||
|
struct _CCSStrExtension
|
||
|
{
|
||
|
char *basePlugin; /* plugin this extension extends */
|
||
|
CCSStringList baseSettings; /* list of settings this extension extends */
|
||
|
CCSStrRestrictionList restriction; /* list of added restriction items */
|
||
|
|
||
|
Bool isScreen; /* is this extension a screen setting extension? */
|
||
|
};
|
||
|
|
||
|
typedef struct _CCSSettingIntInfo
|
||
|
{
|
||
|
int min; /* minimum value for this setting */
|
||
|
int max; /* maximum value */
|
||
|
CCSIntDescList desc; /* list of item descriptions */
|
||
|
} CCSSettingIntInfo;
|
||
|
|
||
|
typedef struct _CCSSettingFloatInfo
|
||
|
{
|
||
|
float min; /* minimum value for this setting */
|
||
|
float max; /* maximum value */
|
||
|
float precision; /* precision (allowed increment) */
|
||
|
} CCSSettingFloatInfo;
|
||
|
|
||
|
typedef struct _CCSSettingStringInfo
|
||
|
{
|
||
|
CCSStrRestrictionList restriction; /* list of restriction items */
|
||
|
int sortStartsAt; /* the restriction index to start sorting
|
||
|
at (defaults to -1 for no sorting) */
|
||
|
Bool extensible; /* whether extension is allowed for
|
||
|
this setting */
|
||
|
} CCSSettingStringInfo;
|
||
|
|
||
|
typedef struct _CCSSettingListInfo
|
||
|
{
|
||
|
CCSSettingType listType; /* type of setting this list contains */
|
||
|
union _CCSSettingInfo *listInfo; /* list of settings */
|
||
|
} CCSSettingListInfo;
|
||
|
|
||
|
typedef struct _CCSSettingActionInfo
|
||
|
{
|
||
|
Bool internal; /* is this binding global or plugin internal*/
|
||
|
} CCSSettingActionInfo;
|
||
|
|
||
|
typedef union _CCSSettingInfo
|
||
|
{
|
||
|
CCSSettingIntInfo forInt;
|
||
|
CCSSettingFloatInfo forFloat;
|
||
|
CCSSettingStringInfo forString;
|
||
|
CCSSettingListInfo forList;
|
||
|
CCSSettingActionInfo forAction;
|
||
|
} CCSSettingInfo;
|
||
|
|
||
|
typedef struct _CCSSettingColorValueColor
|
||
|
{
|
||
|
unsigned short red;
|
||
|
unsigned short green;
|
||
|
unsigned short blue;
|
||
|
unsigned short alpha;
|
||
|
}
|
||
|
|
||
|
CCSSettingColorValueColor;
|
||
|
|
||
|
typedef struct _CCSSettingColorValueArray
|
||
|
{
|
||
|
unsigned short array[4];
|
||
|
}
|
||
|
|
||
|
CCSSettingColorValueArray;
|
||
|
|
||
|
typedef union _CCSSettingColorValue
|
||
|
{
|
||
|
CCSSettingColorValueColor color;
|
||
|
CCSSettingColorValueArray array;
|
||
|
} CCSSettingColorValue;
|
||
|
|
||
|
|
||
|
typedef struct _CCSSettingKeyValue
|
||
|
{
|
||
|
int keysym;
|
||
|
unsigned int keyModMask;
|
||
|
} CCSSettingKeyValue;
|
||
|
|
||
|
typedef struct _CCSSettingButtonValue
|
||
|
{
|
||
|
int button;
|
||
|
unsigned int buttonModMask;
|
||
|
unsigned int edgeMask;
|
||
|
} CCSSettingButtonValue;
|
||
|
|
||
|
typedef union _CCSSettingValueUnion
|
||
|
{
|
||
|
Bool asBool;
|
||
|
int asInt;
|
||
|
float asFloat;
|
||
|
char * asString;
|
||
|
char * asMatch;
|
||
|
CCSSettingColorValue asColor;
|
||
|
CCSSettingValueList asList;
|
||
|
CCSSettingKeyValue asKey;
|
||
|
CCSSettingButtonValue asButton;
|
||
|
unsigned int asEdge;
|
||
|
Bool asBell;
|
||
|
} CCSSettingValueUnion;
|
||
|
|
||
|
struct _CCSSettingValue
|
||
|
{
|
||
|
CCSSettingValueUnion value;
|
||
|
CCSSetting * parent;
|
||
|
Bool isListChild;
|
||
|
};
|
||
|
|
||
|
struct _CCSSetting
|
||
|
{
|
||
|
char *name; /* setting name */
|
||
|
char *shortDesc; /* setting short description in current locale */
|
||
|
char *longDesc; /* setting long description in current locale */
|
||
|
|
||
|
CCSSettingType type; /* setting type */
|
||
|
|
||
|
Bool isScreen; /* is this setting a screen setting? */
|
||
|
unsigned int screenNum; /* screen number this setting is assigned to, valid
|
||
|
if isScreen is TRUE */
|
||
|
|
||
|
CCSSettingInfo info; /* information assigned to this setting,
|
||
|
valid if the setting is an int, float, string
|
||
|
or list setting */
|
||
|
|
||
|
char *group; /* group name in current locale */
|
||
|
char *subGroup; /* sub group name in current locale */
|
||
|
char *hints; /* hints in current locale */
|
||
|
|
||
|
CCSSettingValue defaultValue; /* default value of this setting */
|
||
|
CCSSettingValue *value; /* actual value of this setting */
|
||
|
Bool isDefault; /* does the actual value match the default
|
||
|
value? */
|
||
|
|
||
|
CCSPlugin *parent; /* plugin this setting belongs to */
|
||
|
void *privatePtr; /* private pointer for usage by the caller */
|
||
|
};
|
||
|
|
||
|
struct _CCSPluginCategory
|
||
|
{
|
||
|
const char *name; /* plugin category name */
|
||
|
const char *shortDesc; /* plugin category short description */
|
||
|
const char *longDesc; /* plugin category long description */
|
||
|
|
||
|
CCSStringList plugins; /* list of plugins in this category */
|
||
|
};
|
||
|
|
||
|
/* set basic metadata to TRUE and no additional
|
||
|
metadata informations will be parsed */
|
||
|
void ccsSetBasicMetadata (Bool value);
|
||
|
|
||
|
/* Creates a new context for the screens given in screens and numScreens.
|
||
|
Set numScreens to 0 to initialize for all screens.
|
||
|
All plugin settings are automatically enumerated. */
|
||
|
CCSContext* ccsContextNew (unsigned int *screens,
|
||
|
unsigned int numScreens);
|
||
|
|
||
|
/* Creates a new context without auto-enumerating any plugin or setting.
|
||
|
Behaves otherwise exactly like ccsContextNew. */
|
||
|
CCSContext* ccsEmptyContextNew (unsigned int *screens,
|
||
|
unsigned int numScreens);
|
||
|
|
||
|
/* Destroys the allocated context. */
|
||
|
void ccsContextDestroy (CCSContext * context);
|
||
|
|
||
|
/* Load the plugin and setting metadata for a given plugin.
|
||
|
Returns TRUE on success, FALSE otherwise. */
|
||
|
Bool ccsLoadPlugin (CCSContext *context,
|
||
|
char *name);
|
||
|
|
||
|
/* Searches for a plugin identified by its name in the context.
|
||
|
Returns the plugin struct if it could be found, NULL otherwise. */
|
||
|
CCSPlugin* ccsFindPlugin (CCSContext *context,
|
||
|
const char *name);
|
||
|
|
||
|
/* Searches for a setting in a plugin. screenNum is only valid if isScreen is
|
||
|
TRUE. Returns the setting struct if the search was successful (setting with
|
||
|
name <name> found and isScreen and screenNum matched the values of the
|
||
|
setting), NULL otherwise. */
|
||
|
CCSSetting* ccsFindSetting (CCSPlugin *plugin,
|
||
|
const char *name,
|
||
|
Bool isScreen,
|
||
|
unsigned int screenNum);
|
||
|
|
||
|
/* Returns TRUE if the named plugin is in the context and marked as currently
|
||
|
active in Compiz, FALSE otherwise. */
|
||
|
Bool ccsPluginIsActive (CCSContext *context,
|
||
|
char *name);
|
||
|
|
||
|
void ccsFreeContext (CCSContext *context);
|
||
|
void ccsFreePlugin (CCSPlugin *plugin);
|
||
|
void ccsFreeSetting (CCSSetting *setting);
|
||
|
void ccsFreeGroup (CCSGroup *group);
|
||
|
void ccsFreeSubGroup (CCSSubGroup *subGroup);
|
||
|
void ccsFreeSettingValue (CCSSettingValue *value);
|
||
|
void ccsFreePluginConflict (CCSPluginConflict *value);
|
||
|
void ccsFreeBackendInfo (CCSBackendInfo *value);
|
||
|
void ccsFreeIntDesc (CCSIntDesc *value);
|
||
|
void ccsFreeStrRestriction (CCSStrRestriction *restriction);
|
||
|
void ccsFreeStrExtension (CCSStrExtension *extension);
|
||
|
|
||
|
#define ccsFreeString(val) free(val)
|
||
|
|
||
|
/* Setting setters. Set <setting> to value <data>. Return TRUE if new value
|
||
|
matches data. If the new value doesn't match the old value, the setting
|
||
|
is added to the context's changedSettings list. */
|
||
|
Bool ccsSetInt (CCSSetting *setting,
|
||
|
int data);
|
||
|
Bool ccsSetFloat (CCSSetting *setting,
|
||
|
float data);
|
||
|
Bool ccsSetBool (CCSSetting *setting,
|
||
|
Bool data);
|
||
|
Bool ccsSetString (CCSSetting *setting,
|
||
|
const char *data);
|
||
|
Bool ccsSetColor (CCSSetting *setting,
|
||
|
CCSSettingColorValue data);
|
||
|
Bool ccsSetMatch (CCSSetting *setting,
|
||
|
const char *data);
|
||
|
Bool ccsSetKey (CCSSetting *setting,
|
||
|
CCSSettingKeyValue data);
|
||
|
Bool ccsSetButton (CCSSetting *setting,
|
||
|
CCSSettingButtonValue data);
|
||
|
Bool ccsSetEdge (CCSSetting *setting,
|
||
|
unsigned int data);
|
||
|
Bool ccsSetBell (CCSSetting *setting,
|
||
|
Bool data);
|
||
|
Bool ccsSetList (CCSSetting *setting,
|
||
|
CCSSettingValueList data);
|
||
|
Bool ccsSetValue (CCSSetting *setting,
|
||
|
CCSSettingValue *data);
|
||
|
|
||
|
/* Compares two setting values. Returns TRUE if values match,
|
||
|
FALSE otherwise. */
|
||
|
Bool ccsIsEqualColor (CCSSettingColorValue c1,
|
||
|
CCSSettingColorValue c2);
|
||
|
Bool ccsIsEqualKey (CCSSettingKeyValue c1,
|
||
|
CCSSettingKeyValue c2);
|
||
|
Bool ccsIsEqualButton (CCSSettingButtonValue c1,
|
||
|
CCSSettingButtonValue c2);
|
||
|
|
||
|
/* Setting getters. Returns TRUE if the setting value was successfully
|
||
|
copied into <data>, FALSE otherwise. */
|
||
|
Bool ccsGetInt (CCSSetting *setting,
|
||
|
int *data);
|
||
|
Bool ccsGetFloat (CCSSetting *setting,
|
||
|
float *data);
|
||
|
Bool ccsGetBool (CCSSetting *setting,
|
||
|
Bool *data);
|
||
|
Bool ccsGetString (CCSSetting *setting,
|
||
|
char **data);
|
||
|
Bool ccsGetColor (CCSSetting *setting,
|
||
|
CCSSettingColorValue *data);
|
||
|
Bool ccsGetMatch (CCSSetting *setting,
|
||
|
char **data);
|
||
|
Bool ccsGetKey (CCSSetting *setting,
|
||
|
CCSSettingKeyValue *data);
|
||
|
Bool ccsGetButton (CCSSetting *setting,
|
||
|
CCSSettingButtonValue *data);
|
||
|
Bool ccsGetEdge (CCSSetting *setting,
|
||
|
unsigned int *data);
|
||
|
Bool ccsGetBell (CCSSetting *setting,
|
||
|
Bool *data);
|
||
|
Bool ccsGetList (CCSSetting *setting,
|
||
|
CCSSettingValueList *data);
|
||
|
|
||
|
/* Retrieves a list of settings in a plugin */
|
||
|
CCSSettingList ccsGetPluginSettings (CCSPlugin *plugin);
|
||
|
|
||
|
/* Retrieves a list of setting groups in a plugin */
|
||
|
CCSGroupList ccsGetPluginGroups (CCSPlugin *plugin);
|
||
|
|
||
|
/* Converts a string list into a list of string settings.
|
||
|
Return value needs to be freed by the caller. */
|
||
|
CCSSettingValueList ccsGetValueListFromStringList (CCSStringList list,
|
||
|
CCSSetting *parent);
|
||
|
/* Converts a string setting value list into a string list.
|
||
|
Return value needs to be freed by the caller. */
|
||
|
CCSStringList ccsGetStringListFromValueList (CCSSettingValueList list);
|
||
|
|
||
|
/* Converts a string list into a string array. If the return value is not
|
||
|
NULL, the item count is copied into <num>. Return value needs to be freed
|
||
|
by the caller. */
|
||
|
char** ccsGetStringArrayFromList (CCSStringList list,
|
||
|
int *num);
|
||
|
/* Converts a string array with <num> items into a string list. Return value
|
||
|
needs to be freed by the caller. */
|
||
|
CCSStringList ccsGetListFromStringArray (char **array,
|
||
|
int num);
|
||
|
|
||
|
/* Converts a setting value list into an array of the setting item data type.
|
||
|
Behaves similar to ccsGetStringArrayFromList. */
|
||
|
char** ccsGetStringArrayFromValueList (CCSSettingValueList list,
|
||
|
int *num);
|
||
|
char** ccsGetMatchArrayFromValueList (CCSSettingValueList list,
|
||
|
int *num);
|
||
|
|
||
|
int* ccsGetIntArrayFromValueList (CCSSettingValueList list,
|
||
|
int *num);
|
||
|
float* ccsGetFloatArrayFromValueList (CCSSettingValueList list,
|
||
|
int *num);
|
||
|
Bool * ccsGetBoolArrayFromValueList (CCSSettingValueList list,
|
||
|
int *num);
|
||
|
CCSSettingColorValue* ccsGetColorArrayFromValueList (CCSSettingValueList list,
|
||
|
int *num);
|
||
|
|
||
|
/* Converts an array of data items to a setting value list. Behaves similar
|
||
|
to ccsGetListFromStringArray */
|
||
|
CCSSettingValueList ccsGetValueListFromStringArray (char **array,
|
||
|
int num,
|
||
|
CCSSetting *parent);
|
||
|
CCSSettingValueList ccsGetValueListFromMatchArray (char **array,
|
||
|
int num,
|
||
|
CCSSetting *parent);
|
||
|
CCSSettingValueList ccsGetValueListFromIntArray (int *array,
|
||
|
int num,
|
||
|
CCSSetting *parent);
|
||
|
CCSSettingValueList ccsGetValueListFromFloatArray (float *array,
|
||
|
int num,
|
||
|
CCSSetting *parent);
|
||
|
CCSSettingValueList ccsGetValueListFromBoolArray (Bool *array,
|
||
|
int num,
|
||
|
CCSSetting *parent);
|
||
|
CCSSettingValueList ccsGetValueListFromColorArray (CCSSettingColorValue *array,
|
||
|
int num,
|
||
|
CCSSetting *parent);
|
||
|
|
||
|
/* Retrieves a list of plugins marked as active in Compiz for this context */
|
||
|
CCSPluginList ccsGetActivePluginList (CCSContext *context);
|
||
|
|
||
|
/* Retrieves a list of plugin names which are active in Compiz for a given
|
||
|
context, sorted as needed according to load after/before/etc. rules */
|
||
|
CCSStringList ccsGetSortedPluginStringList (CCSContext *context);
|
||
|
|
||
|
/* Switches the backend for a context. Returns TRUE on successful switch,
|
||
|
FALSE otherwise. */
|
||
|
Bool ccsSetBackend (CCSContext *context,
|
||
|
char *name);
|
||
|
/* Retrieves the name of the backend active for the context. */
|
||
|
char * ccsGetBackend (CCSContext *context);
|
||
|
|
||
|
/* Enable/disable DE integration for a context. */
|
||
|
void ccsSetIntegrationEnabled (CCSContext *context,
|
||
|
Bool value);
|
||
|
|
||
|
/* Sets the profile for a context. */
|
||
|
void ccsSetProfile (CCSContext *context,
|
||
|
char *name);
|
||
|
|
||
|
/* Set plugin list autosort for a context. */
|
||
|
void ccsSetPluginListAutoSort (CCSContext *context,
|
||
|
Bool value);
|
||
|
|
||
|
/* Retrieve current profile of the context. */
|
||
|
char * ccsGetProfile (CCSContext *context);
|
||
|
|
||
|
/* Retrieves current DE integration status for a context */
|
||
|
Bool ccsGetIntegrationEnabled (CCSContext *context);
|
||
|
|
||
|
/* Retrieves the autosort setting for a context. */
|
||
|
Bool ccsGetPluginListAutoSort (CCSContext *context);
|
||
|
|
||
|
/* Changes the plugin activeness status in compiz. If plugin list autosort
|
||
|
is enabled, automatically writes a new sorted plugin list to the
|
||
|
active_plugins setting. If autosort is disabled, it's up to the caller
|
||
|
to do that. */
|
||
|
Bool ccsPluginSetActive (CCSPlugin *plugin,
|
||
|
Bool value);
|
||
|
|
||
|
/* functions parsing/creating an action string -
|
||
|
the returned strings must be free'd after usage! */
|
||
|
|
||
|
char * ccsModifiersToString (unsigned int modMask);
|
||
|
|
||
|
char * ccsEdgesToString (unsigned int edge);
|
||
|
|
||
|
char * ccsEdgesToModString (unsigned int edge);
|
||
|
|
||
|
char * ccsKeyBindingToString (CCSSettingKeyValue *key);
|
||
|
|
||
|
char * ccsButtonBindingToString (CCSSettingButtonValue *button);
|
||
|
|
||
|
char * ccsColorToString (CCSSettingColorValue *color);
|
||
|
|
||
|
unsigned int ccsStringToModifiers (const char *binding);
|
||
|
|
||
|
unsigned int ccsStringToEdges (const char *edge);
|
||
|
|
||
|
unsigned int ccsModStringToEdges (const char *edge);
|
||
|
|
||
|
Bool ccsStringToKeyBinding (const char *binding,
|
||
|
CCSSettingKeyValue *key);
|
||
|
|
||
|
Bool ccsStringToButtonBinding (const char *binding,
|
||
|
CCSSettingButtonValue *button);
|
||
|
|
||
|
Bool ccsStringToColor (const char *value,
|
||
|
CCSSettingColorValue *color);
|
||
|
|
||
|
/* flag values for ccsProcessEvents */
|
||
|
#define ProcessEventsNoGlibMainLoopMask (1 << 0)
|
||
|
|
||
|
void ccsProcessEvents (CCSContext *context,
|
||
|
unsigned int flags);
|
||
|
|
||
|
/* Read all setting values from disk */
|
||
|
void ccsReadSettings (CCSContext *context);
|
||
|
|
||
|
/* Read setting values for a given plugin */
|
||
|
void ccsReadPluginSettings (CCSPlugin *plugin);
|
||
|
|
||
|
/* Write all settings to disk */
|
||
|
void ccsWriteSettings (CCSContext *context);
|
||
|
|
||
|
/* Write changed settings to disk */
|
||
|
void ccsWriteChangedSettings (CCSContext *context);
|
||
|
|
||
|
/* Reset all settings to defaults. Settings that were non-default
|
||
|
previously are added to the changedSettings list of the context. */
|
||
|
void ccsResetToDefault (CCSSetting * setting);
|
||
|
|
||
|
/* Exports a profile to a file. If skipDefaults is TRUE, only exports
|
||
|
non-default settings. Returns TRUE on successful export, FALSE otherwise. */
|
||
|
Bool ccsExportToFile (CCSContext *context,
|
||
|
const char *fileName,
|
||
|
Bool skipDefaults);
|
||
|
|
||
|
/* Imports a profile from a file. If overwriteNonDefault is TRUE, also
|
||
|
overwrites settings that were non-default before. Returns TRUE on success,
|
||
|
FALSE otherwise. */
|
||
|
Bool ccsImportFromFile (CCSContext *context,
|
||
|
const char *fileName,
|
||
|
Bool overwriteNonDefault);
|
||
|
|
||
|
/* File watch stuff */
|
||
|
|
||
|
typedef void (*FileWatchCallbackProc) (unsigned int watchId, void *closure);
|
||
|
|
||
|
unsigned int ccsAddFileWatch (const char *fileName,
|
||
|
Bool enable,
|
||
|
FileWatchCallbackProc callback,
|
||
|
void *closure);
|
||
|
|
||
|
void ccsRemoveFileWatch (unsigned int watchId);
|
||
|
void ccsDisableFileWatch (unsigned int watchId);
|
||
|
void ccsEnableFileWatch (unsigned int watchId);
|
||
|
|
||
|
/* INI file stuff */
|
||
|
|
||
|
typedef struct _dictionary_
|
||
|
{
|
||
|
/** Number of entries in dictionary */
|
||
|
int n;
|
||
|
/** Storage size */
|
||
|
int size;
|
||
|
/** List of string values */
|
||
|
char **val;
|
||
|
/** List of string keys */
|
||
|
char **key ;
|
||
|
/** List of hash values for keys */
|
||
|
unsigned *hash;
|
||
|
} IniDictionary;
|
||
|
|
||
|
IniDictionary* ccsIniNew (void);
|
||
|
IniDictionary* ccsIniOpen (const char *fileName);
|
||
|
void ccsIniClose (IniDictionary *dictionary);
|
||
|
void ccsIniSave (IniDictionary *dictionary,
|
||
|
const char *fileName);
|
||
|
|
||
|
Bool ccsCreateDirFor (const char *fileName);
|
||
|
|
||
|
Bool ccsIniGetString (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
char **value);
|
||
|
Bool ccsIniGetInt (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
int *value);
|
||
|
Bool ccsIniGetFloat (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
float *value);
|
||
|
Bool ccsIniGetBool (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
Bool *value);
|
||
|
Bool ccsIniGetColor (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingColorValue *value);
|
||
|
Bool ccsIniGetKey (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingKeyValue *value);
|
||
|
Bool ccsIniGetButton (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingButtonValue *value);
|
||
|
Bool ccsIniGetEdge (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
unsigned int *value);
|
||
|
Bool ccsIniGetBell (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
Bool *value);
|
||
|
Bool ccsIniGetList (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingValueList *value,
|
||
|
CCSSetting *parent);
|
||
|
|
||
|
void ccsIniSetString (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
char *value);
|
||
|
void ccsIniSetInt (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
int value);
|
||
|
void ccsIniSetFloat (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
float value);
|
||
|
void ccsIniSetBool (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
Bool value);
|
||
|
void ccsIniSetColor (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingColorValue value);
|
||
|
void ccsIniSetKey (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingKeyValue value);
|
||
|
void ccsIniSetButton (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingButtonValue value);
|
||
|
void ccsIniSetEdge (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
unsigned int value);
|
||
|
void ccsIniSetBell (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
Bool value);
|
||
|
void ccsIniSetList (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry,
|
||
|
CCSSettingValueList value,
|
||
|
CCSSettingType listType);
|
||
|
|
||
|
void ccsIniRemoveEntry (IniDictionary *dictionary,
|
||
|
const char *section,
|
||
|
const char *entry);
|
||
|
|
||
|
/* Checks if a plugin can be enabled. Returns a list of conflicts that
|
||
|
would occur when loading the plugin. A return value of NULL means that
|
||
|
the plugin can be enabled without problems. */
|
||
|
CCSPluginConflictList ccsCanEnablePlugin (CCSContext *context,
|
||
|
CCSPlugin *plugin);
|
||
|
|
||
|
/* Checks if a plugin can be disabled. The meaning of the return value is the
|
||
|
same as for ccsCanEnablePlugin */
|
||
|
CCSPluginConflictList ccsCanDisablePlugin (CCSContext *context,
|
||
|
CCSPlugin *plugin);
|
||
|
|
||
|
/* Enumerates the available profiles for the current backend. */
|
||
|
CCSStringList ccsGetExistingProfiles (CCSContext * context);
|
||
|
|
||
|
/* Deletes the profile with the given name. */
|
||
|
void ccsDeleteProfile (CCSContext *context,
|
||
|
char *name);
|
||
|
|
||
|
/* Enumerates the available backends. */
|
||
|
CCSBackendInfoList ccsGetExistingBackends (void);
|
||
|
|
||
|
/* Checks if a given setting is integrated in the desktop environment. */
|
||
|
Bool ccsSettingIsIntegrated (CCSSetting *setting);
|
||
|
|
||
|
/* Checks if a given setting is read-only. */
|
||
|
Bool ccsSettingIsReadOnly (CCSSetting *setting);
|
||
|
|
||
|
CCSStrExtensionList ccsGetPluginStrExtensions (CCSPlugin *plugin);
|
||
|
|
||
|
#endif
|