/*
* This file is autogenerated with bcop:
* The Compiz option code generator
*
* This program 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 General Public License for more details.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <compiz.h>
#define _REFLEX_OPTIONS_INTERNAL
#include "reflex_options.h"
static int displayPrivateIndex;
static CompMetadata reflexOptionsMetadata;
static CompPluginVTable *reflexPluginVTable = NULL;
CompPluginVTable reflexOptionsVTable;
#define GET_REFLEX_OPTIONS_DISPLAY(d) \
((ReflexOptionsDisplay *) (d)->privates[displayPrivateIndex].ptr)
#define REFLEX_OPTIONS_DISPLAY(d) \
ReflexOptionsDisplay *od = GET_REFLEX_OPTIONS_DISPLAY (d)
#define GET_REFLEX_OPTIONS_SCREEN(s, od) \
((ReflexOptionsScreen *) (s)->privates[(od)->screenPrivateIndex].ptr)
#define REFLEX_OPTIONS_SCREEN(s) \
ReflexOptionsScreen *os = GET_REFLEX_OPTIONS_SCREEN (s, GET_REFLEX_OPTIONS_DISPLAY (s->display))
typedef struct _ReflexOptionsDisplay
{
int screenPrivateIndex;
} ReflexOptionsDisplay;
typedef struct _ReflexOptionsScreen
{
CompOption opt[ReflexScreenOptionNum];
reflexScreenOptionChangeNotifyProc notify[ReflexScreenOptionNum];
} ReflexOptionsScreen;
char * reflexGetFile (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return os->opt[ReflexScreenOptionFile].value.s;
}
CompOption * reflexGetFileOption (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionFile];
}
void reflexSetFileNotify (CompScreen *s, reflexScreenOptionChangeNotifyProc notify)
{
REFLEX_OPTIONS_SCREEN(s);
os->notify[ReflexScreenOptionFile] = notify;
}
CompMatch * reflexGetMatch (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionMatch].value.match;
}
CompOption * reflexGetMatchOption (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionMatch];
}
void reflexSetMatchNotify (CompScreen *s, reflexScreenOptionChangeNotifyProc notify)
{
REFLEX_OPTIONS_SCREEN(s);
os->notify[ReflexScreenOptionMatch] = notify;
}
Bool reflexGetWindow (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return os->opt[ReflexScreenOptionWindow].value.b;
}
CompOption * reflexGetWindowOption (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionWindow];
}
void reflexSetWindowNotify (CompScreen *s, reflexScreenOptionChangeNotifyProc notify)
{
REFLEX_OPTIONS_SCREEN(s);
os->notify[ReflexScreenOptionWindow] = notify;
}
Bool reflexGetDecoration (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return os->opt[ReflexScreenOptionDecoration].value.b;
}
CompOption * reflexGetDecorationOption (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionDecoration];
}
void reflexSetDecorationNotify (CompScreen *s, reflexScreenOptionChangeNotifyProc notify)
{
REFLEX_OPTIONS_SCREEN(s);
os->notify[ReflexScreenOptionDecoration] = notify;
}
int reflexGetThreshold (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return os->opt[ReflexScreenOptionThreshold].value.i;
}
CompOption * reflexGetThresholdOption (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionThreshold];
}
void reflexSetThresholdNotify (CompScreen *s, reflexScreenOptionChangeNotifyProc notify)
{
REFLEX_OPTIONS_SCREEN(s);
os->notify[ReflexScreenOptionThreshold] = notify;
}
Bool reflexGetMoving (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return os->opt[ReflexScreenOptionMoving].value.b;
}
CompOption * reflexGetMovingOption (CompScreen *s)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[ReflexScreenOptionMoving];
}
void reflexSetMovingNotify (CompScreen *s, reflexScreenOptionChangeNotifyProc notify)
{
REFLEX_OPTIONS_SCREEN(s);
os->notify[ReflexScreenOptionMoving] = notify;
}
CompOption * reflexGetScreenOption (CompScreen *s, ReflexScreenOptions num)
{
REFLEX_OPTIONS_SCREEN(s);
return &os->opt[num];
}
static const CompMetadataOptionInfo reflexOptionsScreenOptionInfo[] = {
{ "file", "string", 0, 0, 0 },
{ "match", "match", 0, 0, 0 },
{ "window", "bool", 0, 0, 0 },
{ "decoration", "bool", 0, 0, 0 },
{ "threshold", "int", "<min>1</min><max>10</max>", 0, 0 },
{ "moving", "bool", 0, 0, 0 },
};
static Bool reflexOptionsSetScreenOption (CompPlugin *plugin, CompScreen *s, char *name, CompOptionValue *value)
{
REFLEX_OPTIONS_SCREEN(s);
CompOption *o;
int index;
o = compFindOption (os->opt, ReflexScreenOptionNum, name, &index);
if (!o)
return FALSE;
switch (index)
{
case ReflexScreenOptionFile:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ReflexScreenOptionFile])
(*os->notify[ReflexScreenOptionFile]) (s, o, ReflexScreenOptionFile);
return TRUE;
}
break;
case ReflexScreenOptionMatch:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ReflexScreenOptionMatch])
(*os->notify[ReflexScreenOptionMatch]) (s, o, ReflexScreenOptionMatch);
return TRUE;
}
break;
case ReflexScreenOptionWindow:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ReflexScreenOptionWindow])
(*os->notify[ReflexScreenOptionWindow]) (s, o, ReflexScreenOptionWindow);
return TRUE;
}
break;
case ReflexScreenOptionDecoration:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ReflexScreenOptionDecoration])
(*os->notify[ReflexScreenOptionDecoration]) (s, o, ReflexScreenOptionDecoration);
return TRUE;
}
break;
case ReflexScreenOptionThreshold:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ReflexScreenOptionThreshold])
(*os->notify[ReflexScreenOptionThreshold]) (s, o, ReflexScreenOptionThreshold);
return TRUE;
}
break;
case ReflexScreenOptionMoving:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ReflexScreenOptionMoving])
(*os->notify[ReflexScreenOptionMoving]) (s, o, ReflexScreenOptionMoving);
return TRUE;
}
break;
default:
break;
}
return FALSE;
}
static CompOption * reflexOptionsGetScreenOptions (CompPlugin *plugin, CompScreen *s, int *count)
{
REFLEX_OPTIONS_SCREEN(s);
*count = ReflexScreenOptionNum;
return os->opt;
}
static Bool reflexOptionsInitScreen (CompPlugin *p, CompScreen *s)
{
ReflexOptionsScreen *os;
REFLEX_OPTIONS_DISPLAY (s->display);
os = calloc (1, sizeof(ReflexOptionsScreen));
if (!os)
return FALSE;
s->privates[od->screenPrivateIndex].ptr = os;
if (!compInitScreenOptionsFromMetadata (s, &reflexOptionsMetadata, reflexOptionsScreenOptionInfo, os->opt, ReflexScreenOptionNum))
{
free (os);
return FALSE;
}
if (reflexPluginVTable && reflexPluginVTable->initScreen)
return reflexPluginVTable->initScreen (p, s);
return TRUE;
}
static void reflexOptionsFiniScreen (CompPlugin *p, CompScreen *s)
{
if (reflexPluginVTable && reflexPluginVTable->finiScreen)
return reflexPluginVTable->finiScreen (p, s);
REFLEX_OPTIONS_SCREEN (s);
compFiniScreenOptions (s, os->opt, ReflexScreenOptionNum);
free (os);
}
static Bool reflexOptionsInitDisplay (CompPlugin *p, CompDisplay *d)
{
ReflexOptionsDisplay *od;
od = calloc (1, sizeof(ReflexOptionsDisplay));
if (!od)
return FALSE;
od->screenPrivateIndex = allocateScreenPrivateIndex(d);
if (od->screenPrivateIndex < 0)
{
free(od);
return FALSE;
}
d->privates[displayPrivateIndex].ptr = od;
if (reflexPluginVTable && reflexPluginVTable->initDisplay)
return reflexPluginVTable->initDisplay (p, d);
return TRUE;
}
static void reflexOptionsFiniDisplay (CompPlugin *p, CompDisplay *d)
{
if (reflexPluginVTable && reflexPluginVTable->finiDisplay)
return reflexPluginVTable->finiDisplay (p, d);
REFLEX_OPTIONS_DISPLAY (d);
freeScreenPrivateIndex(d, od->screenPrivateIndex);
free (od);
}
static Bool reflexOptionsInit (CompPlugin *p)
{
displayPrivateIndex = allocateDisplayPrivateIndex();
if (displayPrivateIndex < 0)
return FALSE;
if (!compInitPluginMetadataFromInfo (&reflexOptionsMetadata, "reflex",0, 0, reflexOptionsScreenOptionInfo, ReflexScreenOptionNum))
return FALSE;
compAddMetadataFromFile (&reflexOptionsMetadata, "reflex");
if (reflexPluginVTable && reflexPluginVTable->init)
return reflexPluginVTable->init (p);
return TRUE;
}
static void reflexOptionsFini (CompPlugin *p)
{
if (reflexPluginVTable && reflexPluginVTable->fini)
return reflexPluginVTable->fini (p);
if (displayPrivateIndex >= 0)
freeDisplayPrivateIndex(displayPrivateIndex);
compFiniMetadata (&reflexOptionsMetadata);
}
static CompMetadata *
reflexOptionsGetMetadata (CompPlugin *plugin)
{
return &reflexOptionsMetadata;
}
CompPluginVTable *getCompPluginInfo (void)
{
if (!reflexPluginVTable)
{
reflexPluginVTable = reflexOptionsGetCompPluginInfo ();
memcpy(&reflexOptionsVTable, reflexPluginVTable, sizeof(CompPluginVTable));
reflexOptionsVTable.getMetadata = reflexOptionsGetMetadata;
reflexOptionsVTable.init = reflexOptionsInit;
reflexOptionsVTable.fini = reflexOptionsFini;
reflexOptionsVTable.initDisplay = reflexOptionsInitDisplay;
reflexOptionsVTable.finiDisplay = reflexOptionsFiniDisplay;
reflexOptionsVTable.initScreen = reflexOptionsInitScreen;
reflexOptionsVTable.finiScreen = reflexOptionsFiniScreen;
reflexOptionsVTable.getScreenOptions = reflexOptionsGetScreenOptions;
reflexOptionsVTable.setScreenOption = reflexOptionsSetScreenOption;
}
return &reflexOptionsVTable;
}
syntax highlighted by Code2HTML, v. 0.9.1