]> git.ipfire.org Git - thirdparty/newt.git/commitdiff
began adding callbacks (unsuccessfully)
authorewt <ewt>
Mon, 3 Nov 1997 15:42:34 +0000 (15:42 +0000)
committerewt <ewt>
Mon, 3 Nov 1997 15:42:34 +0000 (15:42 +0000)
popcorn.py
snack.py
snackmodule.c

index 88e89c38da8c72bc03602349e52e99f27290e433..68271428d127e5f8d7a49ea8027dc14e77ed0bd7 100755 (executable)
@@ -15,6 +15,11 @@ cb = Checkbox("checkbox")
 r1 = SingleRadioButton("Radio 1", None, 1)
 r2 = SingleRadioButton("Radio 2", r1)
 
+def something():
+    print hello
+
+e.setCallback(lambda: sys.exit(1))
+
 screen = SnackScreen()
 
 sg = Grid(2, 3)
index eddb811f26967ebaa32adb4c837fa226594fc887..046832842fb963aae694df810e3bb91789e304b8 100644 (file)
--- a/snack.py
+++ b/snack.py
@@ -7,7 +7,9 @@
 import _snack
 
 class Widget:
-    pass
+
+    def setCallback(self, obj):
+       self.w.setCallback(obj)
 
 class Button(Widget):
 
index d2eead755571908ec69e74dc77de5106d6e5a565..ace7f40060b8ba7800e125d1ce91a42925b1ee00 100644 (file)
@@ -140,6 +140,7 @@ struct snackWidget_s {
     int anint;
 } ;
 
+static PyObject * widgetAddCallback(snackWidget * s, PyObject * args);
 static PyObject * widgetGetAttr(PyObject * s, char * name);
 static PyObject * widgetEntrySetValue(snackWidget * s, PyObject * args);
 static PyObject * widgetListboxSetW(snackWidget * s, PyObject * args);
@@ -149,6 +150,7 @@ static PyObject * widgetListboxDel(snackWidget * s, PyObject * args);
 static PyObject * widgetListboxGet(snackWidget * s, PyObject * args);
 
 static PyMethodDef widgetMethods[] = {
+    { "setCallback", (PyCFunction) widgetAddCallback, METH_VARARGS, NULL },
     { "entrySetValue", (PyCFunction) widgetEntrySetValue, METH_VARARGS, NULL },
     { "listboxAddItem", (PyCFunction) widgetListboxAdd, METH_VARARGS, NULL },
     { "listboxInsertItem", (PyCFunction) widgetListboxIns, METH_VARARGS, NULL },
@@ -175,6 +177,10 @@ static PyTypeObject snackWidgetType = {
         0,                             /* tp_as_mapping */
 };
 
+static void callbackEntry(newtComponent co, void * arg) {
+    PyEval_CallObject(arg, arg);
+}
+
 static PyObject * initScreen(PyObject * s, PyObject * args) {
     newtInit();
     newtCls();
@@ -581,6 +587,18 @@ static PyObject * widgetGetAttr(PyObject * s, char * name) {
     return Py_FindMethod(widgetMethods, s, name);
 }
 
+static PyObject * widgetAddCallback(snackWidget * s, PyObject * args) {
+    PyObject * object;
+
+    if (!PyArg_ParseTuple(args, "O", &object))
+       return NULL;
+
+    newtComponentAddCallback(s->co, callbackEntry, object);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
 static PyObject * widgetEntrySetValue(snackWidget * s, PyObject * args) {
     char * val;