/* $Id: subwindow_ex.c,v 1.13 2016/12/04 16:20:33 tom Exp $ */ #include #ifdef HAVE_XCURSES char *XCursesProgramName = "subwindow_ex"; #endif /* * This demo displays the ability to put widgets within a curses subwindow. */ int main (int argc, char **argv) { CDKSCREEN *cdkscreen; CDKSCROLL *dowList; CDKLABEL *title; WINDOW *subWindow; const char *dow[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; const char *mesg[5]; int pick; CDK_PARAMS params; CDKparseParams (argc, argv, ¶ms, "s:" CDK_CLI_PARAMS); /* Start curses. */ (void) initCDKScreen (NULL); curs_set (0); /* Create a basic window. */ subWindow = newwin (LINES - 5, COLS - 10, 2, 5); /* Start Cdk. */ cdkscreen = initCDKScreen (subWindow); /* Box our window. */ box (subWindow, ACS_VLINE, ACS_HLINE); wrefresh (subWindow); /* Create a basic scrolling list inside the window. */ dowList = newCDKScroll (cdkscreen, CDKparamValue (¶ms, 'X', CENTER), CDKparamValue (¶ms, 'Y', CENTER), CDKparsePosition (CDKparamString2 (¶ms, 's', "RIGHT")), CDKparamValue (¶ms, 'H', 10), CDKparamValue (¶ms, 'W', 15), "Pick a Day", (CDK_CSTRING2) dow, 7, NONUMBERS, A_REVERSE, CDKparamValue (¶ms, 'N', TRUE), CDKparamValue (¶ms, 'S', FALSE)); /* Put a title within the window. */ mesg[0] = "<#HL(30)>"; mesg[1] = "This is a Cdk scrolling list"; mesg[2] = "inside a curses window."; mesg[3] = "<#HL(30)>"; title = newCDKLabel (cdkscreen, CENTER, 0, (CDK_CSTRING2) mesg, 4, FALSE, FALSE); /* Refresh the screen. */ refreshCDKScreen (cdkscreen); /* Let the user play. */ pick = activateCDKScroll (dowList, 0); /* Clean up. */ destroyCDKScroll (dowList); destroyCDKLabel (title); eraseCursesWindow (subWindow); destroyCDKScreen (cdkscreen); endCDK (); /* Tell them what they picked. */ printf ("You picked %s\n", dow[pick]); ExitProgram (EXIT_SUCCESS); }