/*
* 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 _EXTRAWM_OPTIONS_INTERNAL
#include "extrawm_options.h"
static int displayPrivateIndex;
static CompMetadata extrawmOptionsMetadata;
static CompPluginVTable *extrawmPluginVTable = NULL;
CompPluginVTable extrawmOptionsVTable;
#define GET_EXTRAWM_OPTIONS_DISPLAY(d) \
((ExtrawmOptionsDisplay *) (d)->privates[displayPrivateIndex].ptr)
#define EXTRAWM_OPTIONS_DISPLAY(d) \
ExtrawmOptionsDisplay *od = GET_EXTRAWM_OPTIONS_DISPLAY (d)
#define GET_EXTRAWM_OPTIONS_SCREEN(s, od) \
((ExtrawmOptionsScreen *) (s)->privates[(od)->screenPrivateIndex].ptr)
#define EXTRAWM_OPTIONS_SCREEN(s) \
ExtrawmOptionsScreen *os = GET_EXTRAWM_OPTIONS_SCREEN (s, GET_EXTRAWM_OPTIONS_DISPLAY (s->display))
typedef struct _ExtrawmOptionsDisplay
{
int screenPrivateIndex;
CompOption opt[ExtrawmDisplayOptionNum];
extrawmDisplayOptionChangeNotifyProc notify[ExtrawmDisplayOptionNum];
} ExtrawmOptionsDisplay;
typedef struct _ExtrawmOptionsScreen
{
} ExtrawmOptionsScreen;
CompAction * extrawmGetActivate (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionActivate].value.action;
}
void extrawmSetActivateInitiate (CompDisplay *d, CompActionCallBackProc init)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionActivate].value.action.initiate = init;
}
void extrawmSetActivateTerminate (CompDisplay *d, CompActionCallBackProc term)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionActivate].value.action.terminate = term;
}
CompOption * extrawmGetActivateOption (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionActivate];
}
void extrawmSetActivateNotify (CompDisplay *d, extrawmDisplayOptionChangeNotifyProc notify)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->notify[ExtrawmDisplayOptionActivate] = notify;
}
CompAction * extrawmGetToggleRedirect (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleRedirect].value.action;
}
void extrawmSetToggleRedirectInitiate (CompDisplay *d, CompActionCallBackProc init)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleRedirect].value.action.initiate = init;
}
void extrawmSetToggleRedirectTerminate (CompDisplay *d, CompActionCallBackProc term)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleRedirect].value.action.terminate = term;
}
CompOption * extrawmGetToggleRedirectOption (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleRedirect];
}
void extrawmSetToggleRedirectNotify (CompDisplay *d, extrawmDisplayOptionChangeNotifyProc notify)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->notify[ExtrawmDisplayOptionToggleRedirect] = notify;
}
CompAction * extrawmGetToggleFullscreen (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleFullscreen].value.action;
}
void extrawmSetToggleFullscreenInitiate (CompDisplay *d, CompActionCallBackProc init)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleFullscreen].value.action.initiate = init;
}
void extrawmSetToggleFullscreenTerminate (CompDisplay *d, CompActionCallBackProc term)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleFullscreen].value.action.terminate = term;
}
CompOption * extrawmGetToggleFullscreenOption (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleFullscreen];
}
void extrawmSetToggleFullscreenNotify (CompDisplay *d, extrawmDisplayOptionChangeNotifyProc notify)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->notify[ExtrawmDisplayOptionToggleFullscreen] = notify;
}
CompAction * extrawmGetToggleAlwaysOnTop (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleAlwaysOnTop].value.action;
}
void extrawmSetToggleAlwaysOnTopInitiate (CompDisplay *d, CompActionCallBackProc init)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleAlwaysOnTop].value.action.initiate = init;
}
void extrawmSetToggleAlwaysOnTopTerminate (CompDisplay *d, CompActionCallBackProc term)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleAlwaysOnTop].value.action.terminate = term;
}
CompOption * extrawmGetToggleAlwaysOnTopOption (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleAlwaysOnTop];
}
void extrawmSetToggleAlwaysOnTopNotify (CompDisplay *d, extrawmDisplayOptionChangeNotifyProc notify)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->notify[ExtrawmDisplayOptionToggleAlwaysOnTop] = notify;
}
CompAction * extrawmGetToggleSticky (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleSticky].value.action;
}
void extrawmSetToggleStickyInitiate (CompDisplay *d, CompActionCallBackProc init)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleSticky].value.action.initiate = init;
}
void extrawmSetToggleStickyTerminate (CompDisplay *d, CompActionCallBackProc term)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->opt[ExtrawmDisplayOptionToggleSticky].value.action.terminate = term;
}
CompOption * extrawmGetToggleStickyOption (CompDisplay *d)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[ExtrawmDisplayOptionToggleSticky];
}
void extrawmSetToggleStickyNotify (CompDisplay *d, extrawmDisplayOptionChangeNotifyProc notify)
{
EXTRAWM_OPTIONS_DISPLAY(d);
od->notify[ExtrawmDisplayOptionToggleSticky] = notify;
}
CompOption * extrawmGetDisplayOption (CompDisplay *d, ExtrawmDisplayOptions num)
{
EXTRAWM_OPTIONS_DISPLAY(d);
return &od->opt[num];
}
static const CompMetadataOptionInfo extrawmOptionsDisplayOptionInfo[] = {
{ "activate", "action", 0, 0, 0 },
{ "toggle_redirect", "action", 0, 0, 0 },
{ "toggle_fullscreen", "action", 0, 0, 0 },
{ "toggle_always_on_top", "action", 0, 0, 0 },
{ "toggle_sticky", "action", 0, 0, 0 },
};
static Bool extrawmOptionsSetDisplayOption (CompPlugin *plugin, CompDisplay *d, char *name, CompOptionValue *value)
{
EXTRAWM_OPTIONS_DISPLAY(d);
CompOption *o;
int index;
o = compFindOption (od->opt, ExtrawmDisplayOptionNum, name, &index);
if (!o)
return FALSE;
switch (index)
{
case ExtrawmDisplayOptionActivate:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[ExtrawmDisplayOptionActivate])
(*od->notify[ExtrawmDisplayOptionActivate]) (d, o, ExtrawmDisplayOptionActivate);
return TRUE;
}
break;
case ExtrawmDisplayOptionToggleRedirect:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[ExtrawmDisplayOptionToggleRedirect])
(*od->notify[ExtrawmDisplayOptionToggleRedirect]) (d, o, ExtrawmDisplayOptionToggleRedirect);
return TRUE;
}
break;
case ExtrawmDisplayOptionToggleFullscreen:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[ExtrawmDisplayOptionToggleFullscreen])
(*od->notify[ExtrawmDisplayOptionToggleFullscreen]) (d, o, ExtrawmDisplayOptionToggleFullscreen);
return TRUE;
}
break;
case ExtrawmDisplayOptionToggleAlwaysOnTop:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[ExtrawmDisplayOptionToggleAlwaysOnTop])
(*od->notify[ExtrawmDisplayOptionToggleAlwaysOnTop]) (d, o, ExtrawmDisplayOptionToggleAlwaysOnTop);
return TRUE;
}
break;
case ExtrawmDisplayOptionToggleSticky:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[ExtrawmDisplayOptionToggleSticky])
(*od->notify[ExtrawmDisplayOptionToggleSticky]) (d, o, ExtrawmDisplayOptionToggleSticky);
return TRUE;
}
break;
default:
break;
}
return FALSE;
}
static CompOption * extrawmOptionsGetDisplayOptions (CompPlugin *plugin, CompDisplay *d, int *count)
{
EXTRAWM_OPTIONS_DISPLAY(d);
*count = ExtrawmDisplayOptionNum;
return od->opt;
}
static Bool extrawmOptionsInitScreen (CompPlugin *p, CompScreen *s)
{
ExtrawmOptionsScreen *os;
EXTRAWM_OPTIONS_DISPLAY (s->display);
os = calloc (1, sizeof(ExtrawmOptionsScreen));
if (!os)
return FALSE;
s->privates[od->screenPrivateIndex].ptr = os;
if (extrawmPluginVTable && extrawmPluginVTable->initScreen)
return extrawmPluginVTable->initScreen (p, s);
return TRUE;
}
static void extrawmOptionsFiniScreen (CompPlugin *p, CompScreen *s)
{
if (extrawmPluginVTable && extrawmPluginVTable->finiScreen)
return extrawmPluginVTable->finiScreen (p, s);
EXTRAWM_OPTIONS_SCREEN (s);
free (os);
}
static Bool extrawmOptionsInitDisplay (CompPlugin *p, CompDisplay *d)
{
ExtrawmOptionsDisplay *od;
od = calloc (1, sizeof(ExtrawmOptionsDisplay));
if (!od)
return FALSE;
od->screenPrivateIndex = allocateScreenPrivateIndex(d);
if (od->screenPrivateIndex < 0)
{
free(od);
return FALSE;
}
d->privates[displayPrivateIndex].ptr = od;
if (!compInitDisplayOptionsFromMetadata (d, &extrawmOptionsMetadata, extrawmOptionsDisplayOptionInfo, od->opt, ExtrawmDisplayOptionNum))
{
free (od);
return FALSE;
}
if (extrawmPluginVTable && extrawmPluginVTable->initDisplay)
return extrawmPluginVTable->initDisplay (p, d);
return TRUE;
}
static void extrawmOptionsFiniDisplay (CompPlugin *p, CompDisplay *d)
{
if (extrawmPluginVTable && extrawmPluginVTable->finiDisplay)
return extrawmPluginVTable->finiDisplay (p, d);
EXTRAWM_OPTIONS_DISPLAY (d);
freeScreenPrivateIndex(d, od->screenPrivateIndex);
compFiniDisplayOptions (d, od->opt, ExtrawmDisplayOptionNum);
free (od);
}
static Bool extrawmOptionsInit (CompPlugin *p)
{
displayPrivateIndex = allocateDisplayPrivateIndex();
if (displayPrivateIndex < 0)
return FALSE;
if (!compInitPluginMetadataFromInfo (&extrawmOptionsMetadata, "extrawm",extrawmOptionsDisplayOptionInfo, ExtrawmDisplayOptionNum, 0, 0))
return FALSE;
compAddMetadataFromFile (&extrawmOptionsMetadata, "extrawm");
if (extrawmPluginVTable && extrawmPluginVTable->init)
return extrawmPluginVTable->init (p);
return TRUE;
}
static void extrawmOptionsFini (CompPlugin *p)
{
if (extrawmPluginVTable && extrawmPluginVTable->fini)
return extrawmPluginVTable->fini (p);
if (displayPrivateIndex >= 0)
freeDisplayPrivateIndex(displayPrivateIndex);
compFiniMetadata (&extrawmOptionsMetadata);
}
static CompMetadata *
extrawmOptionsGetMetadata (CompPlugin *plugin)
{
return &extrawmOptionsMetadata;
}
CompPluginVTable *getCompPluginInfo (void)
{
if (!extrawmPluginVTable)
{
extrawmPluginVTable = extrawmOptionsGetCompPluginInfo ();
memcpy(&extrawmOptionsVTable, extrawmPluginVTable, sizeof(CompPluginVTable));
extrawmOptionsVTable.getMetadata = extrawmOptionsGetMetadata;
extrawmOptionsVTable.init = extrawmOptionsInit;
extrawmOptionsVTable.fini = extrawmOptionsFini;
extrawmOptionsVTable.initDisplay = extrawmOptionsInitDisplay;
extrawmOptionsVTable.finiDisplay = extrawmOptionsFiniDisplay;
extrawmOptionsVTable.initScreen = extrawmOptionsInitScreen;
extrawmOptionsVTable.finiScreen = extrawmOptionsFiniScreen;
extrawmOptionsVTable.getDisplayOptions = extrawmOptionsGetDisplayOptions;
extrawmOptionsVTable.setDisplayOption = extrawmOptionsSetDisplayOption;
}
return &extrawmOptionsVTable;
}
syntax highlighted by Code2HTML, v. 0.9.1