Beispiel #1
0
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 );
}
Beispiel #2
0
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 );
}
Beispiel #3
0
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 );
}
Beispiel #4
0
int GUIGetListSize( gui_window *wnd, unsigned id )
{
    VFIELD      *field;
    a_list      *list;

    if( GetList( wnd, id, &field, &list ) ) {
        return( GUIListSize( list ) );
    }
    return( 0 );
}
Beispiel #5
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 );
    }
}
Beispiel #6
0
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 );
    }
}
Beispiel #7
0
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 );
    }
}
Beispiel #8
0
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 );
    }
}