char *configVarVal(struct column *col, char *varName) /* Return value for configuration variable. Return NULL if it * doesn't exist or if it is "" */ { char *name = configVarName(col, varName); return cartNonemptyString(cart, name); }
void setupColumnXyz(struct column *col, char *parameters) /* Set up a xyz type column. */ { /* Read configuration variables and store in column. */ char *varName = configVarName(col, "italics"); col->xyzItalics = cartUsualBoolean(cart, varName, TRUE); col->table = cloneString(nextWord(¶meters)); // Assume have a table parameter first col->keyField = cloneString(nextWord(¶meters)); // Then key field col->valField = cloneString(nextWord(¶meters)); // Then value field if (col->valField == NULL) errAbort("Not enough fields in type for %s", col->name); col->exists = xyzExists; // Required for all columns col->cellVal = xyzCellVal; // Required for all columns // The rest of these methods are optional. Typically the system will do something // sensible if they are missing. Generally you do want to implement the filters. col->cellPrint = xyzCellPrint; // col->labelPrint = xyzLabelPrint; // col->tableColumns = xyzLabelColumns; col->configControls = xyzConfigControls; col->simpleSearch = xyzSimpleSearch; col->filterControls = xyzFilterControls; col->advFilter = xyzAdvFilter; }
static void xyzConfigControls(struct column *col) /* Print out configuration column */ { hPrintf("<TD>"); char *italicsVarName = configVarName(col, "italics"); cgiMakeCheckBox(italicsVarName, cartUsualBoolean(cart, italicsVarName, TRUE)); hPrintf("italics"); hPrintf("</TD>"); }