diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-06-21 22:50:16 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-06-21 22:50:16 +0000 |
| commit | e5b94e6072287d39a777a3cedd0f10a66c58a2b5 (patch) | |
| tree | b808b657089917cd6370f8534382d6539d29bf33 /openbox/actions.c | |
| parent | e5cc6c82520a0d4828394f5edddded77292f22ce (diff) | |
some first structural stuff for new actions
Diffstat (limited to 'openbox/actions.c')
| -rw-r--r-- | openbox/actions.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/openbox/actions.c b/openbox/actions.c new file mode 100644 index 00000000..48778faf --- /dev/null +++ b/openbox/actions.c @@ -0,0 +1,88 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + actions.h for the Openbox window manager + Copyright (c) 2007 Dana Jansens + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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. + + See the COPYING file for a copy of the GNU General Public License. +*/ + +#include "actions.h" + +static void actions_unregister(ObActionsDefinition *def); + +struct _ObActionsDefinition { + gchar *name; + gboolean interactive; + + ObActionsDataParseFunc parse; + ObActionsDataFreeFunc free; + ObActionsRunFunc run; + + gpointer action_data; +}; + +static GSList *registered = NULL; + + +void actions_startup(gboolean reconfig) +{ + if (reconfig) return; + + +} + +void actions_shutdown(gboolean reconfig) +{ + if (reconfig) return; + + /* free all the registered actions */ + while (registered) { + actions_unregister(registered->data); + registered = g_slist_delete_link(registered, registered); + } +} + +gboolean actions_register(const gchar *name, + gboolean interactive, + ObActionsDataSetupFunc setup, + ObActionsDataParseFunc parse, + ObActionsDataFreeFunc free, + ObActionsRunFunc run) +{ + GSList *it; + ObActionsDefinition *def; + + for (it = registered; it; it = g_slist_next(it)) { + def = it->data; + if (!g_ascii_strcasecmp(name, def->name)) /* already registered */ + return FALSE; + } + + def = g_new(ObActionsDefinition, 1); + def->name = g_strdup(name); + def->interactive = interactive; + def->parse = parse; + def->free = free; + def->run = run; + def->action_data = setup(); + return TRUE; +} + +static void actions_unregister(ObActionsDefinition *def) +{ + if (def) { + def->free(def->action_data); + g_free(def->name); + g_free(def); + } +} |
