Add ForEach action which is like If but runs on all clients
[dana/openbox.git] / openbox / actions.h
index de86b9e..f8e1ba8 100644 (file)
@@ -18,7 +18,8 @@
 
 #include "misc.h"
 #include "frame.h"
-#include "obt/parse.h"
+#include "obt/xml.h"
+#include "obt/keyboard.h"
 
 #include <glib.h>
 #include <X11/Xlib.h>
@@ -35,14 +36,18 @@ typedef void     (*ObActionsDataFreeFunc)(gpointer options);
 typedef gboolean (*ObActionsRunFunc)(ObActionsData *data,
                                      gpointer options);
 typedef gpointer (*ObActionsDataSetupFunc)(xmlNodePtr node);
+typedef void     (*ObActionsShutdownFunc)(void);
 
 /* functions for interactive actions */
-typedef void     (*ObActionsIPreFunc)(gpointer options);
+/* return TRUE if the action is going to be interactive, or false to change
+   your mind and make it not */
+typedef gboolean (*ObActionsIPreFunc)(guint initial_state, gpointer options);
 typedef void     (*ObActionsIPostFunc)(gpointer options);
 typedef gboolean (*ObActionsIInputFunc)(guint initial_state,
-                                                  XEvent *e,
-                                                  gpointer options,
-                                                  gboolean *used);
+                                        XEvent *e,
+                                        ObtIC *ic,
+                                        gpointer options,
+                                        gboolean *used);
 typedef void     (*ObActionsICancelFunc)(gpointer options);
 typedef gpointer (*ObActionsIDataSetupFunc)(xmlNodePtr node,
                                             ObActionsIPreFunc *pre,
@@ -75,6 +80,13 @@ gboolean actions_register(const gchar *name,
                           ObActionsDataFreeFunc free,
                           ObActionsRunFunc run);
 
+gboolean actions_set_shutdown(const gchar *name,
+                              ObActionsShutdownFunc shutdown);
+gboolean actions_set_modifies_focused_window(const gchar *name,
+                                             gboolean modifies);
+gboolean actions_set_can_stop(const gchar *name,
+                              gboolean modifies);
+
 ObActionsAct* actions_parse(xmlNodePtr node);
 ObActionsAct* actions_parse_string(const gchar *name);