summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2009-06-12 20:00:13 -0400
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2009-06-12 20:00:13 -0400
commitc106029959fe3fbaa956729e1960c241fed868af (patch)
tree2219d47507c0c0113f5829fc0fbd75b8bfd36705
parenta425237305a2dec6e2f05607e6f3f9a89210d2d1 (diff)
downloadscreen-c106029959fe3fbaa956729e1960c241fed868af.tar.gz
Comapre and Represent displays.
-rw-r--r--src/python.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/python.c b/src/python.c
index f33a03e..29a4a27 100644
--- a/src/python.c
+++ b/src/python.c
@@ -65,10 +65,7 @@ typedef struct
} SPyClosure;
-#define compare_display NULL
#define compare_callback NULL
-
-#define repr_display NULL
#define repr_callback NULL
#define REGISTER_TYPE(type, Type, closures, methods) \
@@ -195,7 +192,40 @@ static SPyClosure dclosures[] =
SPY_CLOSURE("height", "Display height", T_INT, d_height, NULL),
{NULL}
};
-REGISTER_TYPE(display, Display, dclosures, NULL)
+
+static PyMethodDef dmethods[] =
+{
+ {NULL}
+};
+
+static int
+compare_display(PyDisplay *one, PyDisplay *two)
+{
+ struct display *done = one->_obj;
+ struct display *dtwo = two->_obj;
+ struct display *iter;
+
+ if (done->d_userpid == dtwo->d_userpid)
+ return 0;
+
+ for (iter = displays; iter; iter = iter->d_next)
+ if (iter == done)
+ return -1;
+ else if (iter == dtwo)
+ return 1;
+
+ return 0;
+}
+
+static PyObject *
+repr_display(PyObject *obj)
+{
+ PyDisplay *d = obj;
+ struct display *disp = d->_obj;
+ return PyString_FromFormat("display (term: %s, tty: %s)", disp->d_termname, disp->d_usertty);
+}
+
+REGISTER_TYPE(display, Display, dclosures, dmethods)
#undef SPY_CLOSURE
/** }}} */