Index: exposurses.c ================================================================== --- exposurses.c +++ exposurses.c @@ -85,13 +85,14 @@ WINDOW *iso_win; WINDOW *shutter_win; WINDOW *aperture_win; void selection(char *name); -void add_menu(char **array, ITEM **items, MENU *men, WINDOW *win, int n, int xpos, char *title); void remove_menu(ITEM **items, MENU *men, int n); void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color); +MENU *add_menu(char **array, ITEM **items, int n); +WINDOW *add_window(MENU *men, int xpos, char *title); int exposure(int iso); double shutter(int exposure, double aperture); double aperture(int exposure, double shutter); int nearest_match(double x, int menu); double fraction_to_double(char *fraction); @@ -126,14 +127,19 @@ /* Can't really avoid finding array sizes here */ n_exposure = ARRAY_SIZE(exposure_array); n_iso = ARRAY_SIZE(iso_array); n_shutter = ARRAY_SIZE(shutter_array); n_aperture = ARRAY_SIZE(aperture_array); - add_menu(exposure_array, exposure_items, exposure_menu, exposure_win, n_exposure, 4, "EV"); - add_menu(iso_array, iso_items, iso_menu, iso_win, n_iso, 45, "ISO"); - add_menu(shutter_array, shutter_items, shutter_menu, shutter_win, n_shutter, 86, "Shutter"); - add_menu(aperture_array, aperture_items, aperture_menu, aperture_win, n_aperture, 127, "Aperture"); + /* http://stackoverflow.com/a/2620158/208793 */ + exposure_menu = add_menu(exposure_array, exposure_items, n_exposure); + iso_menu = add_menu(iso_array, iso_items, n_iso); + shutter_menu = add_menu(shutter_array, shutter_items, n_shutter); + aperture_menu = add_menu(aperture_array, aperture_items, n_aperture); + exposure_win = add_window(exposure_menu, 4, "EV"); + iso_win = add_window(iso_menu, 45, "ISO"); + shutter_win = add_window(shutter_menu, 86, "Shutter"); + aperture_win = add_window(aperture_menu, 127, "Aperture"); attron(COLOR_PAIR(2)); mvprintw(LINES - 2, 0, "Select EV"); /*mvprintw(LINES - 2, 0, "Select ISO and then one of Shutter/Aperture to calculate other of Shutter/Aperture");*/ mvprintw(LINES - 1, 0, "Arrow keys to navigate, Enter to select, Q to exit"); @@ -259,32 +265,40 @@ remove_menu(shutter_items, shutter_menu, n_shutter); remove_menu(aperture_items, aperture_menu, n_aperture); endwin(); } -void add_menu(char **array, ITEM **items, MENU *men, WINDOW *win, int n, int xpos, char *title) { +MENU *add_menu(char **array, ITEM **items, int n) { int i; + MENU *local_menu; items = (ITEM **)calloc(n, sizeof(ITEM *)); for(i = 0; i