bool GUIListBoxDeleteItem( a_list *list, int choice ) { int size; char **data; int i; size = GUIListSize( list ); if( choice >= size ) { return( FALSE ); } data = (char **)list->data; list->data = (char ** )GUIMemAlloc( sizeof( char * ) * size ); if( list->data == NULL ) { list->data = data; return( FALSE ); } for( i = 0; i < choice; i++ ) { ((char**)list->data)[i] = data[i]; } GUIMemFree( data[choice] ); for( i = choice; i < size; i++ ) { ((char **)list->data)[i] = data[i+1]; } GUIMemFree( data ); if( choice >= GUIListSize( list ) ) { list->choice = 0; } uiupdatelistbox( list ); return( TRUE ); }
bool GUIListBoxDeleteItem( a_list *list, gui_ctl_idx choice ) { gui_ctl_idx size; lb_data old_data; lb_data new_data; gui_ctl_idx i; size = GUIListSize( list ); if( choice >= size ) { return( false ); } new_data = (lb_data)GUIMemAlloc( sizeof( char * ) * size ); if( new_data == NULL ) { return( false ); } old_data = (lb_data)list->data_handle; for( i = 0; i < choice; i++ ) { new_data[i] = old_data[i]; } GUIMemFree( (void *)old_data[choice] ); for( i = choice; i < size; i++ ) { new_data[i] = old_data[i + 1]; } GUIMemFree( (void *)old_data ); list->data_handle = (const void *)new_data; if( choice >= GUIListSize( list ) ) { list->choice = 0; } uiupdatelistbox( list ); return( true ); }
static lb_data ResizeList( a_list *list, unsigned num_to_add, gui_ctl_idx *choice ) { gui_ctl_idx num; lb_data old_data; lb_data new_data; if( list->get == NULL ) { list->get = uigetlistelement; } num = GUIListSize( list ); new_data = (lb_data)GUIMemAlloc( ( num + num_to_add + 1 ) * sizeof( char * ) ); if( new_data == NULL ) { return( NULL ); } if( *choice == -1 ) { *choice = num; } old_data = (lb_data)list->data_handle; if( old_data != NULL ) { memcpy( (void *)new_data, old_data, *choice * sizeof( char * ) ); memcpy( (void *)&new_data[*choice + num_to_add], &old_data[*choice], ( num - *choice ) * sizeof( char * ) ); } new_data[num + num_to_add] = NULL; return( new_data ); }
int GUIGetListSize( gui_window *wnd, unsigned id ) { VFIELD *field; a_list *list; if( GetList( wnd, id, &field, &list ) ) { return( GUIListSize( list ) ); } return( 0 ); }
bool GUIListCurr( a_list *list, gui_ctl_idx choice, bool set, gui_ctl_idx *ret ) { if( set ) { /* set */ if( list->get == NULL ) { list->get = uigetlistelement; } if( GUIListSize( list ) >= choice ) { list->choice = choice; uiupdatelistbox( list ); return( true ); } else { return( false ); } } else { /* get */ *ret = list->choice; return( true ); } }
bool GUIListCurr( a_list *list, int choice, bool set, int *ret ) { if( set ) { /* set */ if( list->get == NULL ) { list->get = ( bool (*) ( void *, unsigned, char *, unsigned ) ) uigetlistelement; } if( GUIListSize( list ) >= choice ) { list->choice = choice; uiupdatelistbox( list ); return( TRUE ); } else { return( FALSE ); } } else { /* get */ *ret = list->choice; return( TRUE ); } }
void GUIFreeList( a_list *list, bool free_list ) { gui_ctl_idx num; gui_ctl_idx i; lb_data data; if( list->get == NULL ) { list->get = uigetlistelement; } num = GUIListSize( list ); data = (lb_data)list->data_handle; for( i = 0; i < num; i++ ) { GUIMemFree( (void *)data[i] ); } GUIMemFree( (void *)data ); list->choice = 0; list->data_handle = NULL; if( free_list ) { GUIMemFree( list ); } }
void GUIFreeList( a_list *list, bool free_list ) { int num; int i; char ** data; if( list->get == NULL ) { list->get = ( bool (*) ( void *, unsigned, char *, unsigned ) ) uigetlistelement; } num = GUIListSize( list ); data = (char **)list->data; for( i = 0; i < num; i++ ) { GUIMemFree( data[i] ); } GUIMemFree( data ); list->choice = 0; list->data = NULL; if( free_list ) { GUIMemFree( list ); } }