/* $Id: Newt.xs,v 1.5 1998/11/09 02:32:06 daniel Exp daniel $ */ #ifdef __cplusplus extern "C" { #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifdef __cplusplus } #endif #include typedef struct _callbackInfo { newtComponent en; char * state; } callbackInfo; /* Suspend stuff */ static SV * suspend_cb = (SV*)NULL; static void suspend() { /* Hardcoded.. ugh. * Perl callback works, but doesn't want to return properly. */ newtSuspend(); raise(SIGTSTP); newtResume(); /* dSP; * PUSHMARK(SP); * perl_call_sv(suspend_cb, G_DISCARD); */ } static int not_here(s) char *s; { croak("%s not implemented on this architecture", s); return -1; } static double constant(name, arg) char *name; int arg; { errno = 0; switch (*name) { case 'A': break; case 'B': break; case 'C': break; case 'D': break; case 'E': break; case 'F': break; case 'G': break; case 'H': if (strEQ(name, "H_NEWT")) #ifdef H_NEWT return H_NEWT; #else goto not_there; #endif break; case 'I': break; case 'J': break; case 'K': break; case 'L': break; case 'M': break; case 'N': if (strEQ(name, "NEWT_ANCHOR_BOTTOM")) #ifdef NEWT_ANCHOR_BOTTOM return NEWT_ANCHOR_BOTTOM; #else goto not_there; #endif if (strEQ(name, "NEWT_ANCHOR_LEFT")) #ifdef NEWT_ANCHOR_LEFT return NEWT_ANCHOR_LEFT; #else goto not_there; #endif if (strEQ(name, "NEWT_ANCHOR_RIGHT")) #ifdef NEWT_ANCHOR_RIGHT return NEWT_ANCHOR_RIGHT; #else goto not_there; #endif if (strEQ(name, "NEWT_ANCHOR_TOP")) #ifdef NEWT_ANCHOR_TOP return NEWT_ANCHOR_TOP; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ACTBUTTON")) #ifdef NEWT_COLORSET_ACTBUTTON return NEWT_COLORSET_ACTBUTTON; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ACTCHECKBOX")) #ifdef NEWT_COLORSET_ACTCHECKBOX return NEWT_COLORSET_ACTCHECKBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ACTLISTBOX")) #ifdef NEWT_COLORSET_ACTLISTBOX return NEWT_COLORSET_ACTLISTBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ACTSELLISTBOX")) #ifdef NEWT_COLORSET_ACTSELLISTBOX return NEWT_COLORSET_ACTSELLISTBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ACTTEXTBOX")) #ifdef NEWT_COLORSET_ACTTEXTBOX return NEWT_COLORSET_ACTTEXTBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_BORDER")) #ifdef NEWT_COLORSET_BORDER return NEWT_COLORSET_BORDER; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_BUTTON")) #ifdef NEWT_COLORSET_BUTTON return NEWT_COLORSET_BUTTON; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_CHECKBOX")) #ifdef NEWT_COLORSET_CHECKBOX return NEWT_COLORSET_CHECKBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_COMPACTBUTTON")) #ifdef NEWT_COLORSET_COMPACTBUTTON return NEWT_COLORSET_COMPACTBUTTON; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_DISENTRY")) #ifdef NEWT_COLORSET_DISENTRY return NEWT_COLORSET_DISENTRY; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_EMPTYSCALE")) #ifdef NEWT_COLORSET_EMPTYSCALE return NEWT_COLORSET_EMPTYSCALE; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ENTRY")) #ifdef NEWT_COLORSET_ENTRY return NEWT_COLORSET_ENTRY; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_FULLSCALE")) #ifdef NEWT_COLORSET_FULLSCALE return NEWT_COLORSET_FULLSCALE; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_HELPLINE")) #ifdef NEWT_COLORSET_HELPLINE return NEWT_COLORSET_HELPLINE; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_LABEL")) #ifdef NEWT_COLORSET_LABEL return NEWT_COLORSET_LABEL; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_LISTBOX")) #ifdef NEWT_COLORSET_LISTBOX return NEWT_COLORSET_LISTBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ROOT")) #ifdef NEWT_COLORSET_ROOT return NEWT_COLORSET_ROOT; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_ROOTTEXT")) #ifdef NEWT_COLORSET_ROOTTEXT return NEWT_COLORSET_ROOTTEXT; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_SELLISTBOX")) #ifdef NEWT_COLORSET_SELLISTBOX return NEWT_COLORSET_SELLISTBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_SHADOW")) #ifdef NEWT_COLORSET_SHADOW return NEWT_COLORSET_SHADOW; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_TEXTBOX")) #ifdef NEWT_COLORSET_TEXTBOX return NEWT_COLORSET_TEXTBOX; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_TITLE")) #ifdef NEWT_COLORSET_TITLE return NEWT_COLORSET_TITLE; #else goto not_there; #endif if (strEQ(name, "NEWT_COLORSET_WINDOW")) #ifdef NEWT_COLORSET_WINDOW return NEWT_COLORSET_WINDOW; #else goto not_there; #endif if (strEQ(name, "NEWT_ENTRY_DISABLED")) #ifdef NEWT_ENTRY_DISABLED return NEWT_ENTRY_DISABLED; #else goto not_there; #endif if (strEQ(name, "NEWT_ENTRY_HIDDEN")) #ifdef NEWT_ENTRY_HIDDEN return NEWT_ENTRY_HIDDEN; #else goto not_there; #endif if (strEQ(name, "NEWT_ENTRY_RETURNEXIT")) #ifdef NEWT_ENTRY_RETURNEXIT return NEWT_ENTRY_RETURNEXIT; #else goto not_there; #endif if (strEQ(name, "NEWT_ENTRY_SCROLL")) #ifdef NEWT_ENTRY_SCROLL return NEWT_ENTRY_SCROLL; #else goto not_there; #endif if (strEQ(name, "NEWT_FD_READ")) #ifdef NEWT_FD_READ return NEWT_FD_READ; #else goto not_there; #endif if (strEQ(name, "NEWT_FD_WRITE")) #ifdef NEWT_FD_WRITE return NEWT_FD_WRITE; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_DISABLED")) #ifdef NEWT_FLAG_DISABLED return NEWT_FLAG_DISABLED; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_DOBORDER")) #ifdef NEWT_FLAG_DOBORDER return NEWT_FLAG_DOBORDER; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_HIDDEN")) #ifdef NEWT_FLAG_HIDDEN return NEWT_FLAG_HIDDEN; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_MULTIPLE")) #ifdef NEWT_FLAG_MULTIPLE return NEWT_FLAG_MULTIPLE; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_NOF12")) #ifdef NEWT_FLAG_NOF12 return NEWT_FLAG_NOF12; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_NOSCROLL")) #ifdef NEWT_FLAG_NOSCROLL return NEWT_FLAG_NOSCROLL; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_RETURNEXIT")) #ifdef NEWT_FLAG_RETURNEXIT return NEWT_FLAG_RETURNEXIT; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_SCROLL")) #ifdef NEWT_FLAG_SCROLL return NEWT_FLAG_SCROLL; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_SELECTED")) #ifdef NEWT_FLAG_SELECTED return NEWT_FLAG_SELECTED; #else goto not_there; #endif if (strEQ(name, "NEWT_FLAG_WRAP")) #ifdef NEWT_FLAG_WRAP return NEWT_FLAG_WRAP; #else goto not_there; #endif if (strEQ(name, "NEWT_FORM_NOF12")) #ifdef NEWT_FORM_NOF12 return NEWT_FORM_NOF12; #else goto not_there; #endif if (strEQ(name, "NEWT_GRID_FLAG_GROWX")) #ifdef NEWT_GRID_FLAG_GROWX return NEWT_GRID_FLAG_GROWX; #else goto not_there; #endif if (strEQ(name, "NEWT_GRID_FLAG_GROWY")) #ifdef NEWT_GRID_FLAG_GROWY return NEWT_GRID_FLAG_GROWY; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_BKSPC")) #ifdef NEWT_KEY_BKSPC return NEWT_KEY_BKSPC; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_DELETE")) #ifdef NEWT_KEY_DELETE return NEWT_KEY_DELETE; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_DOWN")) #ifdef NEWT_KEY_DOWN return NEWT_KEY_DOWN; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_END")) #ifdef NEWT_KEY_END return NEWT_KEY_END; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_ENTER")) #ifdef NEWT_KEY_ENTER return NEWT_KEY_ENTER; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_EXTRA_BASE")) #ifdef NEWT_KEY_EXTRA_BASE return NEWT_KEY_EXTRA_BASE; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F1")) #ifdef NEWT_KEY_F1 return NEWT_KEY_F1; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F10")) #ifdef NEWT_KEY_F10 return NEWT_KEY_F10; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F11")) #ifdef NEWT_KEY_F11 return NEWT_KEY_F11; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F12")) #ifdef NEWT_KEY_F12 return NEWT_KEY_F12; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F2")) #ifdef NEWT_KEY_F2 return NEWT_KEY_F2; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F3")) #ifdef NEWT_KEY_F3 return NEWT_KEY_F3; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F4")) #ifdef NEWT_KEY_F4 return NEWT_KEY_F4; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F5")) #ifdef NEWT_KEY_F5 return NEWT_KEY_F5; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F6")) #ifdef NEWT_KEY_F6 return NEWT_KEY_F6; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F7")) #ifdef NEWT_KEY_F7 return NEWT_KEY_F7; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F8")) #ifdef NEWT_KEY_F8 return NEWT_KEY_F8; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_F9")) #ifdef NEWT_KEY_F9 return NEWT_KEY_F9; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_HOME")) #ifdef NEWT_KEY_HOME return NEWT_KEY_HOME; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_LEFT")) #ifdef NEWT_KEY_LEFT return NEWT_KEY_LEFT; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_PGDN")) #ifdef NEWT_KEY_PGDN return NEWT_KEY_PGDN; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_PGUP")) #ifdef NEWT_KEY_PGUP return NEWT_KEY_PGUP; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_RESIZE")) #ifdef NEWT_KEY_RESIZE return NEWT_KEY_RESIZE; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_RETURN")) #ifdef NEWT_KEY_RETURN return NEWT_KEY_RETURN; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_RIGHT")) #ifdef NEWT_KEY_RIGHT return NEWT_KEY_RIGHT; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_SUSPEND")) #ifdef NEWT_KEY_SUSPEND return NEWT_KEY_SUSPEND; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_TAB")) #ifdef NEWT_KEY_TAB return NEWT_KEY_TAB; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_UNTAB")) #ifdef NEWT_KEY_UNTAB return NEWT_KEY_UNTAB; #else goto not_there; #endif if (strEQ(name, "NEWT_KEY_UP")) #ifdef NEWT_KEY_UP return NEWT_KEY_UP; #else goto not_there; #endif if (strEQ(name, "NEWT_LISTBOX_RETURNEXIT")) #ifdef NEWT_LISTBOX_RETURNEXIT return NEWT_LISTBOX_RETURNEXIT; #else goto not_there; #endif if (strEQ(name, "NEWT_TEXTBOX_SCROLL")) #ifdef NEWT_TEXTBOX_SCROLL return NEWT_TEXTBOX_SCROLL; #else goto not_there; #endif if (strEQ(name, "NEWT_TEXTBOX_WRAP")) #ifdef NEWT_TEXTBOX_WRAP return NEWT_TEXTBOX_WRAP; #else goto not_there; #endif break; case 'O': break; case 'P': break; case 'Q': break; case 'R': break; case 'S': break; case 'T': break; case 'U': break; case 'V': break; case 'W': break; case 'X': break; case 'Y': break; case 'Z': break; } errno = EINVAL; return 0; not_there: errno = ENOENT; return 0; } MODULE = Term::Newt PACKAGE = Term::Newt::XS double constant(name,arg) char * name int arg void DESTROY() CODE: { newtFinished(); } # Functions int newtInit() int newtFinished() void newtCls() void newtResizeScreen(redraw) int redraw; void newtWaitForKey() void newtClearKeyBuffer() void newtDelay(usecs) int usecs; int newtOpenWindow(left,top,width,height,title) int left; int top; int width; int height; const char * title; int newtCenteredWindow(width,height,title) int width; int height; const char * title; void newtPopWindow() #void #newtSetColors(colors) # newtColors colors; void newtRefresh() void newtSuspend() void newtSetSuspendCallback(perl_cb) SV * perl_cb; CODE: { if (suspend_cb == (SV*)NULL) { suspend_cb = newSVsv(perl_cb); } else { SvSetSV(suspend_cb, perl_cb); } newtSetSuspendCallback(suspend); } void newtResume() void newtPushHelpLine(text) const char * text; void newtRedrawHelpLine() void newtPopHelpLine() void newtDrawRootText(row,col,text) int row; int col; const char * text; void newtBell() ##################################### # Components newtComponent newtCompactButton(left,top,text) int left; int top; const char * text; newtComponent newtButton(left,top,text) int left; int top; const char * text; newtComponent newtCheckbox(left,top,text,defValue,seq,result) int left; int top; const char * text; char defValue; const char * seq; char * result; char newtCheckboxGetValue(co) newtComponent co; newtComponent newtRadiobutton(left,top,text,isDefault,prevButton) int left; int top; const char * text; int isDefault; newtComponent prevButton; CODE: if (prevButton == NULL) { prevButton = NULL; } RETVAL = newtRadiobutton(left,top,text,isDefault,prevButton); OUTPUT: RETVAL newtComponent newtRadioGetCurrent(setMember) newtComponent setMember; newtComponent newtListitem(left,top,text,isDefault,prevItem,data,flags) int left; int top; const char * text; int isDefault; newtComponent prevItem; const void * data; int flags; void newtListitemSet(co,text) newtComponent co; const char * text; void * newtListitemGetData(co) newtComponent co; void newtGetScreenSize(cols,rows) int * cols; int * rows; newtComponent newtLabel(left,top,text) int left; int top; const char * text; void newtLabelSetText(co,text) newtComponent co; const char * text; newtComponent newtVerticalScrollbar(left,top,height,normalColorset,thumbColorset) int left; int top; int height; int normalColorset; int thumbColorset; void newtScrollbarSet(co,where,total) newtComponent co; int where; int total; newtComponent newtListbox(left,top,height,flags) int left; int top; int height; int flags; void * newtListboxGetCurrent(co) newtComponent co; void newtListboxSetCurrent(co,num) newtComponent co; int num; void newtListboxSetCurrentByKey(co,key) newtComponent co; void * key; void newtListboxSetText(co,num,text) newtComponent co; int num; const char * text; void newtListboxSetEntry(co,num,text) newtComponent co; int num; const char * text; void newtListboxSetWidth(co,width) newtComponent co; int width; # return the data passed to AddEntry void newtListboxSetData(co,num,data) newtComponent co; int num; void * data; int newtListboxAddEntry(co,text,data) newtComponent co; const char * text; const void * data; # Send the key to insert after, or NULL to insert at the top int newtListboxInsertEntry(co,text,data,key) newtComponent co; const char * text; const void * data; void * key; int newtListboxDeleteEntry(co,data) newtComponent co; void * data; # removes all entries from listbox void newtListboxClear(co) newtComponent co; void newtListboxGetEntry(co,num,text,data) newtComponent co; int num; char * text; void * data; PPCODE: { newtListboxGetEntry(co, num, &text, data); } # Returns an array of data pointers from items, last element is NULL void * newtListboxGetSelection(co,numitems) newtComponent co; int *numitems; void newtListboxClearSelection(co) newtComponent co; void newtListboxSelectItem(co,item,sense) newtComponent co; int item; enum newtFlagsSense sense; newtComponent newtTextboxReflowed(left,top,text,width,flexDown,flexUp,flags) int left; int top; char * text; int width; int flexDown; int flexUp; int flags; newtComponent newtTextbox(left,top,width,height,flags) int left; int top; int width; int height; int flags; void newtTextboxSetText(co,text) newtComponent co; const char * text; void newtTextboxSetHeight(co,height) newtComponent co; int height; int newtTextboxGetNumLines(co) newtComponent co; char * newtReflowText(text,width,flexDown,flexUp,actualWidth,actualHeight) char * text; int width; int flexDown; int flexUp; int * actualWidth; int * actualHeight; newtComponent newtForm(vertBar,help,flags) newtComponent vertBar; const char * help; int flags; void newtFormWatchFd(form,fd,fdFlags) newtComponent form; int fd; int fdFlags; void newtFormSetSize(co) newtComponent co; newtComponent newtFormGetCurrent(co) newtComponent co; void newtFormSetBackground(co,color) newtComponent co; int color; void newtFormSetCurrent(co,subco) newtComponent co; newtComponent subco; void newtFormAddComponent(form,co) newtComponent form; newtComponent co; #void #newtFormAddComponents(form, ...) # newtComponent form; # CODE: # { # int i; # for (i = 1; i < items; i++) { # newtFormAddComponent(form,ST(i)); # } # } void newtFormSetHeight(co,height) newtComponent co; int height; void newtFormSetWidth(co,width) newtComponent co; int width; newtComponent newtRunForm(form) newtComponent form; #void #newtFormRun(co,es) # newtComponent co; # newtExitStruct es; # CODE: # newtFormRun(co, &es); void newtDrawForm(form) newtComponent form; void newtFormAddHotKey(co,key) newtComponent co; int key; newtComponent newtEntry(left,top,initialValue,width,resultPtr,flags) int left; int top; const char * initialValue; int width; SV * resultPtr; int flags; CODE: { /* This isn't quite right.. I need a pointer to a pointer. I * think. */ char *result; RETVAL = newtEntry(left,top,initialValue,width,&result,flags); sv_setpvn(SvRV(resultPtr), (char *)result, strlen(result)); } OUTPUT: RETVAL void newtEntrySet(co,value,cursorAtEnd) newtComponent co; const char * value; int cursorAtEnd; void newtEntrySetFilter(co,filter,data) newtComponent co; newtEntryFilter filter; void * data; char * newtEntryGetValue(co) newtComponent co; newtComponent newtScale(left,top,width,fullValue) int left; int top; int width; long long fullValue; void newtScaleSet(co,amount) newtComponent co; unsigned long long amount; ########################### # Callbacks void newtDisableCallback(co,data) newtComponent co; void * data; CODE: { callbackInfo *cbi = data; if (*cbi->state == ' ') { newtEntrySetFlags(cbi->en, NEWT_FLAG_DISABLED, NEWT_FLAGS_RESET); } else { newtEntrySetFlags(cbi->en, NEWT_FLAG_DISABLED, NEWT_FLAGS_SET); } newtRefresh(); } #callbackInfo #newtNewCallback(co, state) # newtComponent co; # char * state; # CODE: # { # callbackInfo cbis[3]; # cbis[0].state = state; # cbis[0].en = co; # RETVAL = cbis[0]; # } # OUTPUT: # RETVAL #void #newtComponentAddCallback(co,f,data) # newtComponent co; # SV * f; # void * data; # # CODE: # { #void newtComponentAddCallback(newtComponent co, newtCallback f, void * data) { # co->callback = f; # co->callbackData = data; # # PUSHMARK(sp); # newtComponentAddCallback(co, perl_call_pv(f, G_DISCARD|G_NOARGS), data); # } void newtComponentTakesFocus(co,val) newtComponent co; int val; # this also destroys all of the components (including other forms) on the form void newtFormDestroy(form) newtComponent form; ######################### # Grid newtGrid newtCreateGrid(cols,rows) int cols; int rows; newtGrid newtGridVStacked(type,what, ...) enum newtGridElement type; void * what; newtGrid newtGridVCloseStacked(type,what, ...) enum newtGridElement type; void * what; newtGrid newtGridHStacked(type1,what1, ...) enum newtGridElement type1; void * what1; newtGrid newtGridHCloseStacked(type1,what1, ...) enum newtGridElement type1; void * what1; newtGrid newtGridBasicWindow(text,middle,buttons) newtComponent text; newtGrid middle; newtGrid buttons; newtGrid newtGridSimpleWindow(text,middle,buttons) newtComponent text; newtComponent middle; newtGrid buttons; void newtGridSetField(grid,col,row,type,val,padLeft,padTop,padRight,padBottom,anchor,flags) newtGrid grid; int col; int row; enum newtGridElement type; void * val; int padLeft; int padTop; int padRight; int padBottom; int anchor; int flags; void newtGridPlace(grid,left,top) newtGrid grid int left; int top; void newtGridFree(grid,recurse) newtGrid grid; int recurse; void newtGridGetSize(grid,width,height) newtGrid grid; int * width; int * height; void newtGridWrappedWindow(grid,title) newtGrid grid; char * title; void newtGridWrappedWindowAt(grid,title,left,top) newtGrid grid; char * title; int left; int top; void newtGridAddComponentsToForm(grid,form,recurse) newtGrid grid; newtComponent form; int recurse; # convienve newtGrid newtButtonBarv(button1,b1comp,args) char * button1; newtComponent * b1comp; va_list args; newtGrid newtButtonBar(button1,b1comp, ...) char * button1; newtComponent * b1comp; # automatically centered and shrink wrapped void newtWinMessage(title,buttonText,text, ...) char * title; char * buttonText; char * text; void newtWinMessagev(title,buttonText,text,argv) char * title; char * buttonText; char * text; va_list argv; # having separate calls for these two seems silly, but having two separate # variable length-arg lists seems like a bad idea as well # Returns 0 if F12 was pressed, 1 for button1, 2 for button2 int newtWinChoice(title,button1,button2,text, ...) char * title; char * button1; char * button2; char * text; int newtWinTernary(title,button1,button2,button3,message, ...) char * title; char * button1; char * button2; char * button3; char * message; int newtWinMenu(title,text,suggestedWidth,flexDown,flexUp,maxListHeight,nitems,listItem,button1, ...) char * title; char * text; int suggestedWidth; int flexDown; int flexUp; int maxListHeight; char * nitems; int * listItem; char * button1; CODE: { RETVAL = newtWinMenu(title,text,suggestedWidth, flexDown,flexUp,maxListHeight,&nitems,listItem,button1); } OUTPUT: RETVAL # Returns the button number pressed, 0 on F12. The final values are # dynamically allocated, and need to be freed. #int #newtWinEntries(title,text,suggestedWidth,flexDown,flexUp,dataWidth,nitems,button1,...) # char * title; # char * text; # int suggestedWidth; # int flexDown; # int flexUp; # int dataWidth; # newtWinEntry * nitems; # char * button1; # CODE: # { # RETVAL = newtWinEntries(title,text,suggestedWidth, # flexDown,flexUp,dataWidth,&nitems,button1); # # } # OUTPUT: # RETVAL