openbox/action.h (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
#ifndef __action_h #define __action_h #include "misc.h" #include "parser/parse.h" typedef struct _ObAction ObAction; /* These have to all have a Client* at the top even if they don't use it, so that I can set it blindly later on. So every function will have a Client* available (possibly NULL though) if it wants it. */ struct AnyAction { struct _ObClient *c; gboolean interactive; }; struct InteractiveAction { struct AnyAction any; gboolean final; gboolean cancel; }; struct DirectionalAction{ struct AnyAction any; ObDirection direction; }; struct Execute { struct AnyAction any; char *path; }; struct ClientAction { struct AnyAction any; }; struct Activate { struct AnyAction any; gboolean here; /* bring it to the current desktop */ }; struct MoveResizeRelative { struct AnyAction any; int delta; }; struct SendToDesktop { struct AnyAction any; guint desk; gboolean follow; }; struct SendToDesktopDirection { struct InteractiveAction inter; ObDirection dir; gboolean wrap; gboolean linear; gboolean follow; }; struct Desktop { struct AnyAction any; guint desk; }; struct Layer { struct AnyAction any; int layer; /* < 0 = below, 0 = normal, > 0 = above */ }; struct DesktopDirection { struct InteractiveAction inter; ObDirection dir; gboolean wrap; gboolean linear; }; struct MoveResize { struct AnyAction any; int x; int y; guint32 corner; /* prop_atoms.net_wm_moveresize_* */ guint button; }; struct ShowMenu { struct AnyAction any; char *name; int x; int y; }; struct CycleWindows { struct InteractiveAction inter; gboolean linear; gboolean forward; }; union ActionData { struct AnyAction any; struct InteractiveAction inter; struct DirectionalAction diraction; struct Execute execute; struct ClientAction client; struct Activate activate; struct MoveResizeRelative relative; struct SendToDesktop sendto; struct SendToDesktopDirection sendtodir; struct Desktop desktop; struct DesktopDirection desktopdir; struct MoveResize moveresize; struct ShowMenu showmenu; struct CycleWindows cycle; struct Layer layer; }; struct _ObAction { /* The func member acts like an enum to tell which one of the structs in the data union are valid. */ void (*func)(union ActionData *data); union ActionData data; }; ObAction *action_new(void (*func)(union ActionData *data)); /* Creates a new Action from the name of the action A few action types need data set after making this call still. Check if the returned action's "func" is one of these. action_execute - the path needs to be set action_restart - the path can optionally be set action_desktop - the destination desktop needs to be set action_move_relative_horz - the delta action_move_relative_vert - the delta action_resize_relative_horz - the delta action_resize_relative_vert - the delta */ ObAction *action_from_string(char *name); ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); void action_free(ObAction *a); /* Execute */ void action_execute(union ActionData *data); /* ActivateAction */ void action_activate(union ActionData *data); /* ClientAction */ void action_focus(union ActionData *data); /* ClientAction */ void action_unfocus(union ActionData *data); /* ClientAction */ void action_iconify(union ActionData *data); /* ClientAction */ void action_raiselower(union ActionData *data); /* ClientAction */ void action_raise(union ActionData *data); /* ClientAction */ void action_lower(union ActionData *data); /* ClientAction */ void action_close(union ActionData *data); /* ClientAction */ void action_kill(union ActionData *data); /* ClientAction */ void action_shade(union ActionData *data); /* ClientAction */ void action_shadelower(union ActionData *data); /* ClientAction */ void action_unshaderaise(union ActionData *data); /* ClientAction */ void action_unshade(union ActionData *data); /* ClientAction */ void action_toggle_shade(union ActionData *data); /* ClientAction */ void action_toggle_omnipresent(union ActionData *data); /* MoveResizeRelative */ void action_move_relative_horz(union ActionData *data); /* MoveResizeRelative */ void action_move_relative_vert(union ActionData *data); /* MoveResizeRelative */ void action_resize_relative_horz(union ActionData *data); /* MoveResizeRelative */ void action_resize_relative_vert(union ActionData *data); /* ClientAction */ void action_maximize_full(union ActionData *data); /* ClientAction */ void action_unmaximize_full(union ActionData *data); /* ClientAction */ void action_toggle_maximize_full(union ActionData *data); /* ClientAction */ void action_maximize_horz(union ActionData *data); /* ClientAction */ void action_unmaximize_horz(union ActionData *data); /* ClientAction */ void action_toggle_maximize_horz(union ActionData *data); /* ClientAction */ void action_maximize_vert(union ActionData *data); /* ClientAction */ void action_unmaximize_vert(union ActionData *data); /* ClientAction */ void action_toggle_maximize_vert(union ActionData *data); /* SendToDesktop */ void action_send_to_desktop(union ActionData *data); /* SendToDesktopDirection */ void action_send_to_desktop_dir(union ActionData *data); /* Desktop */ void action_desktop(union ActionData *data); /* DesktopDirection */ void action_desktop_dir(union ActionData *data); /* ClientAction */ void action_toggle_decorations(union ActionData *data); /* MoveResize */ void action_moveresize(union ActionData *data); /* Execute */ void action_restart(union ActionData *data); /* Any */ void action_exit(union ActionData *data); /* ShowMenu */ void action_showmenu(union ActionData *data); /* CycleWindows */ void action_cycle_windows(union ActionData *data); /* DirectionalAction */ void action_directional_focus(union ActionData *data); /* DirectionalAction */ void action_movetoedge(union ActionData *data); /* DirectionalAction */ void action_growtoedge(union ActionData *data); /* Layer */ void action_send_to_layer(union ActionData *data); /* Layer */ void action_toggle_layer(union ActionData *data); /* Any */ void action_toggle_show_desktop(union ActionData *data); /* Any */ void action_show_desktop(union ActionData *data); /* Any */ void action_unshow_desktop(union ActionData *data); #endif |