snackArgs = {}
snackArgs['append'] = -1
-class Widget:
+FLAG_DISABLED = _snack.FLAG_DISABLED
+FLAGS_SET = _snack.FLAGS_SET
+FLAGS_RESET = _snack.FLAGS_RESET
+FLAGS_TOGGLE = _snack.FLAGS_TOGGLE
- def setCallback(self, obj):
- self.w.setCallback(obj)
+class Widget:
+ def setCallback(self, obj, data):
+ self.w.setCallback(obj, data)
class Button(Widget):
def set(self, text):
return self.w.entrySetValue(text)
+ def setFlags (self, flag, sense):
+ return self.w.entrySetFlags(flag, sense)
+
def __init__(self, width, text = "", hidden = 0, scroll = 1,
returnExit = 0):
self.w = _snack.entry(width, text, hidden, scroll, returnExit)
self.trans = {}
self.w = _snack.form()
+ def setCurrent (self, co):
+ self.w.setcurrent (co.w)
+
class Grid:
def place(self, x, y):
self.screen.popWindow()
return result
+ def setCurrent (self, co):
+ self.form.setCurrent (co)
+
class CheckboxTree(Widget):
def append(self, text, item = None, selected = 0):
self.addItem(text, (snackArgs['append'], ), item, selected)
typedef struct snackGrid_s snackGrid;
typedef struct snackForm_s snackForm;
-struct suspendCallbackStruct {
+struct callbackStruct {
PyObject * cb, * data;
};
static PyObject * formDraw(snackForm * s, PyObject * args);
static PyObject * formRun(snackForm * s, PyObject * args);
static PyObject * formHotKey(snackForm * s, PyObject * args);
+static PyObject * formSetCurrent(snackForm * form, PyObject * args);
static PyMethodDef formMethods[] = {
{ "add", (PyCFunction) formAdd, METH_VARARGS, NULL },
{ "draw", (PyCFunction) formDraw, METH_VARARGS, NULL },
{ "run", (PyCFunction) formRun, METH_VARARGS, NULL },
{ "addhotkey", (PyCFunction) formHotKey, METH_VARARGS, NULL },
+ { "setcurrent", (PyCFunction) formSetCurrent, METH_VARARGS, NULL },
{ NULL }
};
char achar;
void * apointer;
int anint;
+ struct callbackStruct scs;
} ;
static PyObject * widgetAddCallback(snackWidget * s, PyObject * args);
static PyObject * widgetListboxGet(snackWidget * s, PyObject * args);
static PyObject * widgetTextboxText(snackWidget * s, PyObject * args);
static PyObject * widgetCheckboxTreeAddItem(snackWidget * s, PyObject * args);
-static PyObject * widgetCheckboxTreeGetSel(snackWidget * s,
- PyObject * args);
+static PyObject * widgetCheckboxTreeGetSel(snackWidget * s, PyObject * args);
+static PyObject * widgetEntrySetFlags(snackWidget * s, PyObject * args);
static PyMethodDef widgetMethods[] = {
{ "setCallback", (PyCFunction) widgetAddCallback, METH_VARARGS, NULL },
METH_VARARGS, NULL },
{ "checkboxtreeGetSelection", (PyCFunction) widgetCheckboxTreeGetSel,
METH_VARARGS, NULL },
+ { "entrySetFlags", (PyCFunction) widgetEntrySetFlags, METH_VARARGS, NULL },
{ NULL }
};
0, /* tp_as_mapping */
};
-static void callbackEntry(newtComponent co, void * arg) {
- PyEval_CallObject(arg, arg);
-}
-
static PyObject * initScreen(PyObject * s, PyObject * args) {
newtInit();
newtCls();
return Py_BuildValue("(ii)", width, height);
}
-static void suspendCallback(void * data) {
- struct suspendCallbackStruct * scs = data;
+static void suspendCallbackMarshall(void * data) {
+ struct callbackStruct * scs = data;
+ PyObject * args, * result;
+
+ args = Py_BuildValue("(O)", scs->data);
+ result = PyEval_CallObject(scs->cb, args);
+
+ Py_DECREF(args);
+ Py_XDECREF(result);
+
+ return;
+}
+
+static void callbackMarshall(newtComponent co, void * data) {
+ struct callbackStruct * scs = data;
PyObject * args, * result;
args = Py_BuildValue("(O)", scs->data);
result = PyEval_CallObject(scs->cb, args);
+ if (!result) {
+ PyErr_Print();
+ PyErr_Clear();
+ }
+
Py_DECREF(args);
Py_XDECREF(result);
}
static PyObject * setSuspendCallback(PyObject * s, PyObject * args) {
- static struct suspendCallbackStruct scs;
+ static struct callbackStruct scs;
- if (!PyArg_ParseTuple(args, "OO", &scs.cb, &scs.data))
+ if (!PyArg_ParseTuple(args, "O|O", &scs.cb, &scs.data))
return NULL;
- newtSetSuspendCallback(suspendCallback, &scs);
+ newtSetSuspendCallback(suspendCallbackMarshall, &scs);
Py_INCREF(Py_None);
return Py_None;
return Py_None;
}
+static PyObject * formSetCurrent(snackForm * form, PyObject * args) {
+ snackWidget * w;
+
+ if (!PyArg_ParseTuple(args, "O", &w))
+ return NULL;
+
+ newtFormSetCurrent(form->fo, w->co);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
static PyObject * widgetGetAttr(PyObject * s, char * name) {
snackWidget * w = (snackWidget *) s;
}
static PyObject * widgetAddCallback(snackWidget * s, PyObject * args) {
- PyObject * object;
-
- if (!PyArg_ParseTuple(args, "O", &object))
+ if (!PyArg_ParseTuple(args, "O|O", &s->scs.cb, &s->scs.data))
return NULL;
- newtComponentAddCallback(s->co, callbackEntry, object);
+ newtComponentAddCallback(s->co, callbackMarshall, &s->scs);
Py_INCREF(Py_None);
return Py_None;
return Py_None;
}
+static PyObject * widgetEntrySetFlags(snackWidget * s, PyObject * args) {
+ int flag, sense;
+
+ if (!PyArg_ParseTuple(args, "ii", &flag, &sense)) return NULL;
+
+ newtEntrySetFlags(s->co, flag, sense);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
static PyObject * widgetListboxAdd(snackWidget * s, PyObject * args) {
char * text;
PyDict_SetItemString(d, "KEY_F10", PyInt_FromLong(NEWT_KEY_F10));
PyDict_SetItemString(d, "KEY_F11", PyInt_FromLong(NEWT_KEY_F11));
PyDict_SetItemString(d, "KEY_F12", PyInt_FromLong(NEWT_KEY_F12));
+
+ PyDict_SetItemString(d, "FLAG_DISABLED", PyInt_FromLong(NEWT_FLAG_DISABLED));
+ PyDict_SetItemString(d, "FLAGS_SET", PyInt_FromLong(NEWT_FLAGS_SET));
+ PyDict_SetItemString(d, "FLAGS_RESET", PyInt_FromLong(NEWT_FLAGS_RESET));
+ PyDict_SetItemString(d, "FLAGS_TOGGLE", PyInt_FromLong(NEWT_FLAGS_TOGGLE));
}