ct->firstItem = NULL;
ct->currItem = NULL;
ct->flatList = NULL;
- if (seq)
- ct->seq = strdup(seq);
- else
- ct->seq = strdup(" *");
+
+ ct->flags = flags;
+
+ if (seq)
+ ct->seq = strdup(seq);
+ else
+ ct->seq = strdup(" *");
if (flags & NEWT_FLAG_SCROLL) {
ct->sb = newtVerticalScrollbar(left, top, height,
COLORSET_LISTBOX, COLORSET_ACTLISTBOX);
case NEWT_FLAGS_TOGGLE:
if (item->branch)
item->selected = !item->selected;
- else {
+ else if (!(ct->flags & NEWT_CHECKBOXTREE_UNSELECTABLE)) {
item->selected++;
if (item->selected==strlen(ct->seq))
item->selected = 0;
else
SLsmg_write_string("<+> ");
} else {
- char tmp[5];
- snprintf(tmp,5,"[%c] ",ct->seq[(*item)->selected]);
- SLsmg_write_string(tmp);
+ if (ct->flags & NEWT_CHECKBOXTREE_HIDE_BOX) {
+ if ((*item)->selected)
+ SLsmg_set_color(NEWT_COLORSET_ACTLISTBOX);
+ } else {
+ char tmp[5];
+ snprintf(tmp,5,"[%c] ",ct->seq[(*item)->selected]);
+ SLsmg_write_string(tmp);
+ }
}
SLsmg_write_nstring((*item)->text, co->width - 4 -
(3 * (*item)->depth));
+
+ SLsmg_set_color(NEWT_COLORSET_LISTBOX);
+
item++;
i++;
}
#define NEWT_FD_WRITE (1 << 1)
#define NEWT_FD_EXCEPT (1 << 2)
+#define NEWT_CHECKBOXTREE_UNSELECTABLE (1 << 12)
+#define NEWT_CHECKBOXTREE_HIDE_BOX (1 << 13)
+
#define NEWT_CHECKBOXTREE_COLLAPSED '\0'
#define NEWT_CHECKBOXTREE_EXPANDED '\1'
#define NEWT_CHECKBOXTREE_UNSELECTED ' '
char newtCheckboxTreeGetEntryValue(newtComponent co, const void * data);
void newtCheckboxTreeSetEntryValue(newtComponent co, const void * data,
char value);
-
+
newtComponent newtTextboxReflowed(int left, int top, char * text, int width,
int flexDown, int flexUp, int flags);
newtComponent newtTextbox(int left, int top, int width, int height, int flags);
static PyObject * reflowText(PyObject * s, PyObject * args);
static snackWidget * textWidget(PyObject * s, PyObject * args);
static PyObject * ternaryWindow(PyObject * s, PyObject * args);
-static snackWidget * checkboxTreeWidget(PyObject * s, PyObject * args);
+static snackWidget * checkboxTreeWidget(PyObject * s, PyObject * args, PyObject * kwargs);
static PyMethodDef snackModuleMethods[] = {
{ "button", (PyCFunction) buttonWidget, METH_VARARGS, NULL },
{ "suspendcallback", setSuspendCallback, METH_VARARGS, NULL },
{ "ternary", ternaryWindow, METH_VARARGS, NULL },
{ "textbox", (PyCFunction) textWidget, METH_VARARGS, NULL },
- { "checkboxtree", (PyCFunction) checkboxTreeWidget, METH_VARARGS, NULL },
+ { "checkboxtree", (PyCFunction) checkboxTreeWidget, METH_VARARGS | METH_KEYWORDS, NULL },
{ NULL }
} ;
{ "checkboxtreeSetEntryValue", (PyCFunction) widgetCheckboxTreeSetEntryValue,
METH_VARARGS, NULL },
{ "checkboxtreeGetSelection", (PyCFunction) widgetCheckboxTreeGetSel,
- METH_VARARGS, NULL },
+ METH_VARARGS, NULL },
{ "entrySetFlags", (PyCFunction) widgetEntrySetFlags, METH_VARARGS, NULL },
{ "checkboxSetFlags", (PyCFunction) widgetCheckboxSetFlags, METH_VARARGS, NULL },
{ "checkboxSetValue", (PyCFunction) widgetCheckboxSetValue, METH_VARARGS, NULL },
static void emptyDestructor(PyObject * s) {
}
-static snackWidget * checkboxTreeWidget(PyObject * s, PyObject * args) {
+static snackWidget * checkboxTreeWidget(PyObject * s, PyObject * args, PyObject * kwargs) {
int height;
int scrollBar = 0;
+ int hide_checkbox = 0;
+ int unselectable = 0;
+ int flags;
snackWidget * widget;
+ const char *kw[] = {"height", "scrollbar", "hide_checkbox", "unselectable", NULL};
- if (!PyArg_ParseTuple(args, "i|i", &height, &scrollBar))
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|iii", (char **) kw,
+ &height, &scrollBar, &hide_checkbox, &unselectable))
return NULL;
+ flags = (scrollBar ? NEWT_FLAG_SCROLL : 0) |
+ (hide_checkbox ? NEWT_CHECKBOXTREE_HIDE_BOX : 0) |
+ (unselectable ? NEWT_CHECKBOXTREE_UNSELECTABLE : 0);
+
widget = snackWidgetNew ();
- widget->co = newtCheckboxTree(-1, -1, height,
- scrollBar ? NEWT_FLAG_SCROLL : 0);
+ widget->co = newtCheckboxTree(-1, -1, height, flags);
widget->anint = 1;