li.append("Second", "s")
li.insert("Another", "a", "f")
li.delete("a")
+ct = CheckboxTree(5, scroll = 1)
+ct.append("Colors")
+ct.addItem("Red", (0, snackArgs['append']))
+ct.addItem("Yellow", (0, snackArgs['append']))
+ct.addItem("Blue", (0, snackArgs['append']))
+ct.append("Flavors")
+ct.append("Numbers")
+ct.append("Names")
+ct.append("Months")
+ct.append("Events")
b = Button("Button")
e = Entry(15, "Entry")
l = Label("label")
screen.popWindow()
+g = GridForm(screen, "Tree", 1, 2)
+g.add(ct, 0, 0, (0, 0, 0, 1))
+g.add(Button("Ok"), 0, 1)
+g.runOnce()
+
screen.finish()
import types
import string
+snackArgs = {}
+snackArgs['append'] = -1
+
class Widget:
def setCallback(self, obj):
return result
class CheckboxTree(Widget):
- def append(self, text, item, selected):
- key = self.w.checkboxtreeAppend(text, selected)
+ def append(self, text, item = None, selected = 0):
+ self.addItem(text, (snackArgs['append'], ), item, selected)
+
+ def addItem(self, text, path, item = None, selected = 0):
+ if (not item):
+ item = text
+ key = self.w.checkboxtreeAddItem(text, path, selected)
self.key2item[key] = item
self.item2key[item] = key
static PyObject * widgetListboxDel(snackWidget * s, PyObject * args);
static PyObject * widgetListboxGet(snackWidget * s, PyObject * args);
static PyObject * widgetTextboxText(snackWidget * s, PyObject * args);
-static PyObject * widgetCheckboxTreeAppend(snackWidget * s, PyObject * args);
+static PyObject * widgetCheckboxTreeAddItem(snackWidget * s, PyObject * args);
static cbSelection * widgetCheckboxTreeGetSel(snackWidget * s,
PyObject * args);
{ "listboxSetWidth", (PyCFunction) widgetListboxSetW, METH_VARARGS, NULL },
{ "listboxDeleteItem", (PyCFunction) widgetListboxDel, METH_VARARGS, NULL },
{ "scaleSet", (PyCFunction) scaleSet, METH_VARARGS, NULL },
- { "checkboxtreeAppend", (PyCFunction) widgetCheckboxTreeAppend,
+ { "checkboxtreeAddItem", (PyCFunction) widgetCheckboxTreeAddItem,
METH_VARARGS, NULL },
{ "checkboxtreeGetSelection", (PyCFunction) widgetCheckboxTreeGetSel,
METH_VARARGS, NULL },
return widget;
}
-static PyObject * widgetCheckboxTreeAppend(snackWidget * s, PyObject * args) {
+static PyObject * widgetCheckboxTreeAddItem(snackWidget * s, PyObject * args) {
char * text;
- void * key;
int selected = 0;
-
- if (!PyArg_ParseTuple(args, "s|i", &text, &selected))
+ PyObject * pathList, * o;
+ int len;
+ int * path;
+ int i;
+
+ if (!PyArg_ParseTuple(args, "sOi", &text, &pathList, &selected))
return NULL;
- newtCheckboxTreeAppend(s->co, selected, text, (void *) s->anint);
+ len = PyTuple_Size(pathList);
+ path = alloca(sizeof(*path) * (len + 1));
+ for (i = 0; i < len; i++) {
+ o = PyTuple_GetItem(pathList, i);
+ path[i] = PyInt_AsLong(o);
+ printf("found %d\n", path[i]);
+ }
+ path[len] = NEWT_ARG_LAST;
+
+ newtCheckboxTreeAddArray(s->co, text, (void *) 5,
+ selected ? NEWT_FLAG_SELECTED : 0, path);
return PyInt_FromLong(s->anint++);
}