diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-21 07:54:23 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-21 07:54:23 +0000 |
| commit | a648c05a7a2608e7e909317f5afe8427a0ea0d68 (patch) | |
| tree | 9a8355e87192adeec50ee7eaff227decc8af8ffd /c/clientwrap.c | |
| parent | 474f689132d906a553bdc695d3c179652cbe8c53 (diff) | |
kill the c dir
Diffstat (limited to 'c/clientwrap.c')
| -rw-r--r-- | c/clientwrap.c | 792 |
1 files changed, 0 insertions, 792 deletions
diff --git a/c/clientwrap.c b/c/clientwrap.c deleted file mode 100644 index 1ea5c9f0..00000000 --- a/c/clientwrap.c +++ /dev/null @@ -1,792 +0,0 @@ -#include "clientwrap.h" -#include "client.h" -#include "frame.h" -#include "stacking.h" -#include "focus.h" -#include <glib.h> - -/*************************************************************************** - - Define the type 'ClientWrap' - - ***************************************************************************/ - -#define IS_CWRAP(v) ((v)->ob_type == &ClientWrapType) -#define IS_VALID_CWRAP(v) ((v)->client != NULL) -#define CHECK_CWRAP(self, funcname) { \ - if (!IS_CWRAP(self)) { \ - PyErr_SetString(PyExc_TypeError, \ - "descriptor '" funcname "' requires a 'Client' " \ - "object"); \ - return NULL; \ - } \ - if (!IS_VALID_CWRAP(self)) { \ - PyErr_SetString(PyExc_ValueError, \ - "This 'Client' is wrapping a client which no longer "\ - "exists."); \ - return NULL; \ - } \ -} - - -staticforward PyTypeObject ClientWrapType; - -/*************************************************************************** - - Attribute methods - - ***************************************************************************/ - -static PyObject *cwrap_window(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "window"); - if (!PyArg_ParseTuple(args, ":window")) - return NULL; - return PyInt_FromLong(self->client->window); -} - -static PyObject *cwrap_group(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "group"); - if (!PyArg_ParseTuple(args, ":group")) - return NULL; - return PyInt_FromLong(self->client->group); -} - -static PyObject *cwrap_parent(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "parent"); - if (!PyArg_ParseTuple(args, ":parent")) - return NULL; - if (self->client->transient_for != NULL) - return clientwrap_new(self->client->transient_for); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject *cwrap_children(ClientWrap *self, PyObject *args) -{ - PyObject *list; - GSList *it; - guint i, s; - - CHECK_CWRAP(self, "children"); - if (!PyArg_ParseTuple(args, ":children")) - return NULL; - s = g_slist_length(self->client->transients); - list = PyList_New(s); - for (i = 0, it = self->client->transients; i < s; ++i, it = it->next) - PyList_SET_ITEM(list, i, clientwrap_new(it->data)); - return list; -} - -static PyObject *cwrap_desktop(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "desktop"); - if (!PyArg_ParseTuple(args, ":desktop")) - return NULL; - return PyInt_FromLong(self->client->desktop); -} - -static PyObject *cwrap_title(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "title"); - if (!PyArg_ParseTuple(args, ":title")) - return NULL; - return PyString_FromString(self->client->title); -} - -static PyObject *cwrap_iconTitle(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "iconTitle"); - if (!PyArg_ParseTuple(args, ":iconTitle")) - return NULL; - return PyString_FromString(self->client->icon_title); -} - -static PyObject *cwrap_resName(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "resName"); - if (!PyArg_ParseTuple(args, ":resName")) - return NULL; - return PyString_FromString(self->client->res_name); -} - -static PyObject *cwrap_resClass(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "resClass"); - if (!PyArg_ParseTuple(args, ":resClass")) - return NULL; - return PyString_FromString(self->client->res_class); -} - -static PyObject *cwrap_role(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "role"); - if (!PyArg_ParseTuple(args, ":role")) - return NULL; - return PyString_FromString(self->client->role); -} - -static PyObject *cwrap_type(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "type"); - if (!PyArg_ParseTuple(args, ":type")) - return NULL; - return PyInt_FromLong(self->client->type); -} - -static PyObject *cwrap_area(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "area"); - if (!PyArg_ParseTuple(args, ":area")) - return NULL; - tuple = PyTuple_New(4); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->area.x)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->area.y)); - PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(self->client->area.width)); - PyTuple_SET_ITEM(tuple, 3, PyInt_FromLong(self->client->area.height)); - return tuple; -} - -static PyObject *cwrap_screenArea(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "screenArea"); - if (!PyArg_ParseTuple(args, ":screenArea")) - return NULL; - tuple = PyTuple_New(4); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->frame->area.x)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->frame->area.y)); - PyTuple_SET_ITEM(tuple, 2, - PyInt_FromLong(self->client->frame->area.width)); - PyTuple_SET_ITEM(tuple, 3, - PyInt_FromLong(self->client->frame->area.height)); - return tuple; -} - -static PyObject *cwrap_strut(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "strut"); - if (!PyArg_ParseTuple(args, ":strut")) - return NULL; - tuple = PyTuple_New(4); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->strut.left)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->strut.top)); - PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(self->client->strut.right)); - PyTuple_SET_ITEM(tuple, 3, PyInt_FromLong(self->client->strut.bottom)); - return tuple; -} - -static PyObject *cwrap_logicalSize(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "logicalSize"); - if (!PyArg_ParseTuple(args, ":logicalSize")) - return NULL; - tuple = PyTuple_New(2); - PyTuple_SET_ITEM(tuple, 0, - PyInt_FromLong(self->client->logical_size.width)); - PyTuple_SET_ITEM(tuple, 1, - PyInt_FromLong(self->client->logical_size.height)); - return tuple; -} - -static PyObject *cwrap_minRatio(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "minRatio"); - if (!PyArg_ParseTuple(args, ":minRatio")) - return NULL; - return PyFloat_FromDouble(self->client->min_ratio); -} - -static PyObject *cwrap_maxRatio(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "maxRatio"); - if (!PyArg_ParseTuple(args, ":maxRatio")) - return NULL; - return PyFloat_FromDouble(self->client->max_ratio); -} - -static PyObject *cwrap_minSize(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "minSize"); - if (!PyArg_ParseTuple(args, ":minSize")) - return NULL; - tuple = PyTuple_New(2); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->min_size.width)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->min_size.height)); - return tuple; -} - -static PyObject *cwrap_maxSize(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "maxSize"); - if (!PyArg_ParseTuple(args, ":maxSize")) - return NULL; - tuple = PyTuple_New(2); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->max_size.width)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->max_size.height)); - return tuple; -} - -static PyObject *cwrap_sizeIncrement(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "sizeIncrement"); - if (!PyArg_ParseTuple(args, ":sizeIncrement")) - return NULL; - tuple = PyTuple_New(2); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->size_inc.width)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->size_inc.height)); - return tuple; -} - -static PyObject *cwrap_baseSize(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "baseSize"); - if (!PyArg_ParseTuple(args, ":baseSize")) - return NULL; - tuple = PyTuple_New(2); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->base_size.width)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->base_size.height)); - return tuple; -} - -static PyObject *cwrap_gravity(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "gravity"); - if (!PyArg_ParseTuple(args, ":gravity")) - return NULL; - return PyInt_FromLong(self->client->gravity); -} - -static PyObject *cwrap_canClose(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "canClose"); - if (!PyArg_ParseTuple(args, ":canClose")) - return NULL; - return PyInt_FromLong(self->client->delete_window ? 1 : 0); -} - -static PyObject *cwrap_positionRequested(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "positionRequested"); - if (!PyArg_ParseTuple(args, ":positionRequested")) - return NULL; - return PyInt_FromLong(self->client->positioned ? 1 : 0); -} - -static PyObject *cwrap_canFocus(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "canFocus"); - if (!PyArg_ParseTuple(args, ":canFocus")) - return NULL; - return PyInt_FromLong(self->client->can_focus || - self->client->focus_notify); -} - -static PyObject *cwrap_urgent(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "urgent"); - if (!PyArg_ParseTuple(args, ":urgent")) - return NULL; - return PyInt_FromLong(self->client->urgent ? 1 : 0); -} - -static PyObject *cwrap_focused(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "focused"); - if (!PyArg_ParseTuple(args, ":focused")) - return NULL; - return PyInt_FromLong(self->client->focused ? 1 : 0); -} - -static PyObject *cwrap_modal(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "modal"); - if (!PyArg_ParseTuple(args, ":modal")) - return NULL; - return PyInt_FromLong(self->client->modal ? 1 : 0); -} - -static PyObject *cwrap_shaded(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "shaded"); - if (!PyArg_ParseTuple(args, ":shaded")) - return NULL; - return PyInt_FromLong(self->client->shaded ? 1 : 0); -} - -static PyObject *cwrap_iconic(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "iconic"); - if (!PyArg_ParseTuple(args, ":iconc")) - return NULL; - return PyInt_FromLong(self->client->iconic ? 1 : 0); -} - -static PyObject *cwrap_maximizedVertical(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "maximizedVertical"); - if (!PyArg_ParseTuple(args, ":maximizedVertical")) - return NULL; - return PyInt_FromLong(self->client->max_vert ? 1 : 0); -} - -static PyObject *cwrap_maximizedHorizontal(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "maximizedHorizontal"); - if (!PyArg_ParseTuple(args, ":maximizedHorizontal")) - return NULL; - return PyInt_FromLong(self->client->max_horz ? 1 : 0); -} - -static PyObject *cwrap_skipPager(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "skipPager"); - if (!PyArg_ParseTuple(args, ":skipPager")) - return NULL; - return PyInt_FromLong(self->client->skip_pager ? 1 : 0); -} - -static PyObject *cwrap_skipTaskbar(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "skipTaskbar"); - if (!PyArg_ParseTuple(args, ":skipTaskbar")) - return NULL; - return PyInt_FromLong(self->client->skip_taskbar ? 1 : 0); -} - -static PyObject *cwrap_fullscreen(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "fullscreen"); - if (!PyArg_ParseTuple(args, ":fullscreen")) - return NULL; - return PyInt_FromLong(self->client->fullscreen ? 1 : 0); -} - -static PyObject *cwrap_above(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "above"); - if (!PyArg_ParseTuple(args, ":above")) - return NULL; - return PyInt_FromLong(self->client->above ? 1 : 0); -} - -static PyObject *cwrap_below(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "below"); - if (!PyArg_ParseTuple(args, ":below")) - return NULL; - return PyInt_FromLong(self->client->below ? 1 : 0); -} - -static PyObject *cwrap_layer(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "layer"); - if (!PyArg_ParseTuple(args, ":layer")) - return NULL; - return PyInt_FromLong(self->client->layer); -} - -static PyObject *cwrap_decorations(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "decorations"); - if (!PyArg_ParseTuple(args, ":decorations")) - return NULL; - return PyInt_FromLong(self->client->decorations); -} - -static PyObject *cwrap_disabledDecorations(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "disabledDecorations"); - if (!PyArg_ParseTuple(args, ":disabledDecorations")) - return NULL; - return PyInt_FromLong(self->client->disabled_decorations); -} - -static PyObject *cwrap_functions(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "functions"); - if (!PyArg_ParseTuple(args, ":functions")) - return NULL; - return PyInt_FromLong(self->client->functions); -} - -static PyObject *cwrap_visible(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "visible"); - if (!PyArg_ParseTuple(args, ":visible")) - return NULL; - return PyInt_FromLong(self->client->frame->visible ? 1 : 0); -} - -static PyObject *cwrap_decorationSize(ClientWrap *self, PyObject *args) -{ - PyObject *tuple; - - CHECK_CWRAP(self, "decorationSize"); - if (!PyArg_ParseTuple(args, ":decorationSize")) - return NULL; - tuple = PyTuple_New(4); - PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(self->client->frame->size.left)); - PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(self->client->frame->size.top)); - PyTuple_SET_ITEM(tuple, 2, - PyInt_FromLong(self->client->frame->size.right)); - PyTuple_SET_ITEM(tuple, 3, - PyInt_FromLong(self->client->frame->size.bottom)); - return tuple; -} - -static PyObject *cwrap_normal(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "normal"); - if (!PyArg_ParseTuple(args, ":normal")) - return NULL; - return PyInt_FromLong(client_normal(self->client) ? 1 : 0); -} - -static PyObject *cwrap_setVisible(ClientWrap *self, PyObject *args) -{ - int i; - - CHECK_CWRAP(self, "setVisible"); - if (!PyArg_ParseTuple(args, "i:setVisible", &i)) - return NULL; - if (i) - frame_show(self->client->frame); - else - frame_hide(self->client->frame); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject *cwrap_raiseWindow(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "raiseWindow"); - if (!PyArg_ParseTuple(args, ":raiseWindow")) - return NULL; - stacking_raise(self->client); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject *cwrap_lowerWindow(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "lowerWindow"); - if (!PyArg_ParseTuple(args, ":lowerWindow")) - return NULL; - stacking_lower(self->client); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject *cwrap_focus(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "focus"); - if (!PyArg_ParseTuple(args, ":focus")) - return NULL; - return PyInt_FromLong(client_focus(self->client) ? 1 : 0); -} - -static PyObject *cwrap_unfocus(ClientWrap *self, PyObject *args) -{ - CHECK_CWRAP(self, "unfocus"); - if (!PyArg_ParseTuple(args, ":unfocus")) - return NULL; - client_unfocus(self->client); - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject *cwrap_move(ClientWrap *self, PyObject *args) -{ - int x, y; - int final = TRUE; - CHECK_CWRAP(self, "move"); - if (!PyArg_ParseTuple(args, "ii|i:unfocus", &x, &y, &final)) - return NULL; - /* get the client's position based on x,y for the frame */ - frame_frame_gravity(self->client->frame, &x, &y); - - client_configure(self->client, Corner_TopLeft, x, y, - self->client->area.width, self->client->area.height, - TRUE, final); - Py_INCREF(Py_None); - return Py_None; -} - -#define ATTRMETH(n, d) {#n, (PyCFunction)cwrap_##n, METH_VARARGS, #d} - -static PyMethodDef ClientWrapMethods[] = { - ATTRMETH(window, - "c.window() -- Returns the window id for the Client."), - ATTRMETH(group, - "c.group() -- Returns the group id for the Client."), - ATTRMETH(parent, - "c.parent() -- Returns the parent Client for the Client, or the " - "Client for which this Client is a transient. Returns None if it " - "is not a transient."), - ATTRMETH(children, - "c.parent() -- Returns a list of child Clients for the Client, " - "or the Clients transients."), - ATTRMETH(desktop, - "c.desktop() -- Returns the desktop on which the Client resides, " - "or 0xffffffff for 'all desktops'."), - ATTRMETH(title, - "c.title() -- Returns the Client's title string. This is in " - "UTF-8 encoding."), - ATTRMETH(iconTitle, - "c.iconTitle() -- Returns the Client's icon title string. This " - "is in UTF-8 encoding."), - ATTRMETH(resName, - "c.resName() -- Returns the application's specified resource " - "name."), - ATTRMETH(resClass, - "c.resClass() -- Returns the application's specified resource " - "class."), - ATTRMETH(role, - "c.role() -- Returns the window's role, which should be unique " - "for every window of an application, if it is not empty."), - ATTRMETH(type, - "c.type() -- Returns the window's type, one of the ob.Type_ " - "constants. This is the logical type of the window."), - ATTRMETH(area, - "c.area() -- Returns the area rectangle for the Client in a " - "tuple. The tuple's format is (x, y, width, height). This is " - "not the area on-screen that the Client and frame occupies, but " - "rather, the position and size that the Client has requested, " - "before its gravity() and decorations have been applied. You " - "should use the c.screenArea() to get the actual on-screen area " - "for the Client."), - ATTRMETH(screenArea, - "c.screenArea() -- Returns the on-screen area rectangle for the " - "Client in a tuple. The tuple's format is (x, y, width, height). " - "This is the actual position and size of the Client plus its " - "decorations."), - ATTRMETH(strut, - "c.strut() -- Returns the strut requested by the Client in a " - "tuple. The format of the tuple is (left, top, right, bottom)."), - ATTRMETH(logicalSize, - "c.logicalSize() -- Returns the logical size of the Client. This " - "is the 'user friendly' size for the Client, such as for an " - "xterm, it will be the number of characters in the xterm " - "instead of the number of pixels it takes up."), - ATTRMETH(minRatio, - "c.minRatio() -- Returns the minimum width:height ratio for " - "the Client. A value of 0 implies no ratio enforcement."), - ATTRMETH(maxRatio, - "c.maxRatio() -- Returns the maximum width:height ratio for " - "the Client. A value of 0 implies no ratio enforcement."), - ATTRMETH(minSize, - "c.minSize() -- Returns the minimum size of the Client."), - ATTRMETH(maxSize, - "c.maxSize() -- Returns the maximum size of the Client."), - ATTRMETH(sizeIncrement, - "c.sizeIncrement() -- Returns the size increments in which the " - "Client must be resized."), - ATTRMETH(baseSize, - "c.baseSize() -- Returns the base size of the Client, which is " - "subtracted from the Client's size before comparing to its " - "various sizing constraints."), - ATTRMETH(gravity, - "c.gravity() -- Returns the gravity for the Client. One of the " - "ob.Gravity_ constants."), - ATTRMETH(canClose, - "c.canClose() -- Returns whether or not the Client provides a " - "means for Openbox to request that it close."), - ATTRMETH(positionRequested, - "c.positionRequested() -- Returns whether or not the Client has " - "requested a specified position on screen. When it has it should " - "probably not be placed using an algorithm when it is managed."), - ATTRMETH(canFocus, - "c.canFocus() -- Returns whether or not the Client can be " - "given input focus."), - ATTRMETH(urgent, - "c.urgent() -- Returns the urgent state of the window (on/off)."), - ATTRMETH(focused, - "c.focused() -- Returns whether or not the Client has the input " - "focus."), - ATTRMETH(modal, - "c.modal() -- Returns whether or not the Client is modal. A " - "modal Client implies that it needs to be closed before its " - "parent() can be used (focsed) again."), - ATTRMETH(shaded, - "c.shaded() -- Returns whether or not the Client is shaded. " - "Shaded clients are hidden except for their titlebar."), - ATTRMETH(iconic, - "c.iconic() -- Returns whether or not the Client is iconic. " - "Iconic windows are represented only by icons, or possibly " - "hidden entirely."), - ATTRMETH(maximizedVertical, - "c.maximizedVertical() -- Returns whether or not the Client is " - "maxized vertically. When a Client is maximized it will expand " - "to fill as much of the screen as it can in that direction."), - ATTRMETH(maximizedHorizontal, - "c.maximizedHorizontal() -- Returns whether or not the Client is " - "maxized horizontally. When a Client is maximized it will expand " - "to fill as much of the screen as it can in that direction."), - ATTRMETH(skipPager, - "c.skipPager() -- Returns whether the Client as requested to be " - "skipped by pagers."), - ATTRMETH(skipTaskbar, - "c.skipTaskbar() -- Returns whether the Client as requested to " - "be skipped by taskbars."), - ATTRMETH(fullscreen, - "c.fullscreen() -- Returns whether the Client is in fullscreen " - "mode."), - ATTRMETH(above, - "c.above() -- Returns whether the Client should be stacked above " - "other windows of the same type."), - ATTRMETH(below, - "c.below() -- Returns whether the Client should be stacked below " - "other windows of the same type."), - ATTRMETH(layer, - "c.layer() -- Returns the layer in which the window should be " - "stacked. This is one of the ob.Layer_ constants. Windows in " - "layers with higher values should be kept above windows in lower " - "valued layers."), - ATTRMETH(decorations, - "c.decorations() -- Returns a mask of decorations which the " - "Client will be given. It is made up of the ob.Decor_ constants. " - "These can be turned off with the " - " disabledDecorations()."), - ATTRMETH(disabledDecorations, - "c.disabledDecorations() -- returns a mask of decorations which " - "are disabled on the Client. This is made up of the ob.Decor_ " - "constants."), - ATTRMETH(functions, - "ob.functions() -- Returns the list of functionality for the " - "Client, in a mask made up of the ob.Func_ constants."), - ATTRMETH(visible, - "ob.visible() -- Returns if the client is currently visible " - "or hidden."), - ATTRMETH(decorationSize, - "c.decorationSize() -- Returns the size of the Client's " - "decorations around the Client window, in a tuple. The format of " - "the tuple is (left, top, right, bottom)."), - ATTRMETH(normal, - "c.normal() -- Returns if the window should be treated as a " - "normal window. Some windows (desktops, docks, splash screens) " - "should have special rules applied to them in a number of " - "places regarding focus or user interaction."), - ATTRMETH(setVisible, - "c.setVisible(show) -- Shows or hides the Client."), - ATTRMETH(raiseWindow, - "c.raiseWindow() -- Raises the Client to the top of its layer."), - ATTRMETH(lowerWindow, - "c.lowerWindow() -- Lowers the Client to the bottom of its " - "layer."), - ATTRMETH(focus, - "c.focus() -- Focuses the Client. Returns 1 if the Client will " - "be focused, or 0 if it will not."), - ATTRMETH(unfocus, - "c.unfocus() -- Unfocuses the Client, leaving nothing focused."), - ATTRMETH(move, - "c.move(x, y) -- Moves the Client to the specified position. The " - "top left corner of the Client's decorations is positioned at " - "the given x, y."), - { NULL, NULL, 0, NULL } -}; - -/*************************************************************************** - - Type methods/struct - - ***************************************************************************/ - -/*static PyObject *cwrap_getattr(ClientWrap *self, char *name) -{ - CHECK_CWRAP(self, "getattr"); - return Py_FindMethod(ClientWrapAttributeMethods, (PyObject*)self, name); -}*/ - -static void cwrap_dealloc(ClientWrap *self) -{ - if (self->client != NULL) - self->client->wrap = NULL; - PyObject_Del((PyObject*) self); -} - -static PyObject *cwrap_repr(ClientWrap *self) -{ - CHECK_CWRAP(self, "repr"); - return PyString_FromFormat("0x%x", (guint)self->client->window); -} - -static int cwrap_compare(ClientWrap *self, ClientWrap *other) -{ - Window w1, w2; - if (!IS_VALID_CWRAP(self)) { - PyErr_SetString(PyExc_ValueError, - "This 'Client' is wrapping a client which no longer " - "exists."); - } - - w1 = self->client->window; - w2 = self->client->window; - return w1 > w2 ? 1 : w1 < w2 ? -1 : 0; -} - -static PyTypeObject ClientWrapType = { - PyObject_HEAD_INIT(NULL) - 0, - "Client", - sizeof(ClientWrap), - 0, - (destructor) cwrap_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - (cmpfunc) cwrap_compare, /*tp_compare*/ - (reprfunc) cwrap_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ -}; - -/*************************************************************************** - - External methods - - ***************************************************************************/ - -void clientwrap_startup() -{ - ClientWrapType.ob_type = &PyType_Type; - ClientWrapType.tp_methods = ClientWrapMethods; - PyType_Ready(&ClientWrapType); -} - -void clientwrap_shutdown() -{ -} - -PyObject *clientwrap_new(Client *client) -{ - g_assert(client != NULL); - - if (client->wrap != NULL) { - /* already has a wrapper! */ - Py_INCREF((PyObject*) client->wrap); - } else { - client->wrap = PyObject_New(ClientWrap, &ClientWrapType); - client->wrap->client = client; - } - return (PyObject*) client->wrap; -} |
