home *** CD-ROM | disk | FTP | other *** search
-
- /* x4list.c (c)Copyright Sequiter Software Inc., 1987-1990. All rights reserved. */
-
- #include "d4base.h"
- #include "w4.h"
-
- #ifndef UNIX
- #include <conio.h>
- #endif
-
- extern CB_WINDOW *v4window_ptr ;
-
- x4list()
- {
- int rc, j, hand, len, row ;
- long field_ref ;
-
- if ( (rc = d4top()) < 0) return -1 ;
-
- hand = w4handle( -2 ) ;
- if ( hand < 0 ) w4clear(0) ;
-
- while ( rc == 0 )
- {
- if ( (rc = x4filter_do()) < 0 ) return -1 ;
- if ( rc )
- {
- #ifndef UNIX
- if ( kbhit() )
- if ( g4char() == 27 ) return 0 ;
- #endif
- if ( (rc = d4skip(1L)) < 0 ) return -1 ;
- continue ;
- }
-
- row = w4row()+1 ;
- if ( w4col() == 0 ) row-- ;
-
- if ( hand < 0 )
- {
- if ( row >= v4window_ptr->height-1 )
- {
- w4(v4window_ptr->height-1,0, "Press any key to continue ... " ) ;
- w4cursor( w4row(), w4col() ) ;
- if ( g4char() == 27 ) return 0 ;
- row = 0 ;
- w4clear(0) ;
- }
- else
- w4position( row, 0 ) ;
- }
- else
- w4position( row, 0 ) ;
-
- for ( j=1; j <= f4num_fields(); j++ )
- {
- field_ref = f4j_ref(j) ;
- if ( f4type(field_ref) == 'M' ) continue ;
-
- len = f4width( field_ref ) ;
- if ( w4col()+len+2 > w4width(-1) )
- {
- len = w4width(-1) - w4col() ;
- if ( len > f4width(field_ref) ) len = f4width(field_ref) ;
-
- w4num( row,w4col(), f4ptr(field_ref), len ) ;
- break ;
- }
-
- w4num( row,w4col(), f4ptr(field_ref), len ) ;
- w4position( row, w4col()+2 ) ;
- }
-
- if ( (rc = d4skip(1L)) < 0 ) return -1 ;
- #ifndef UNIX
- if ( kbhit() )
- if ( g4char() == 27 ) return 0 ;
- #endif
- }
-
- if ( hand <= 0 )
- w4cursor( v4window_ptr->height-2, 0 ) ;
-
- return 0 ;
- }
-