?? zscreen.c
字號:
|| S->fs[fld].t == 'L' || S->fs[fld].t == 'I' ){
if( key == '-' ){
ToNegative( S->fs + fld );
}
else if( key == '+' ){
ToPositive( S->fs + fld );
}
else{
if( ( S->fs[fld].t == 'D' || S->fs[fld].t == 'F' )
&& S->fs[fld].d != 0 ){
if( key == '.' ){
if( pos < S->fs[fld].w - S->fs[fld].d ){
pos = S->fs[fld].w - S->fs[fld].d;
}
}
else{
if( pos >= S->fs[fld].w - S->fs[fld].d ){
B->b[pos] = key;
if( ( key = FirstPos( S->fs + fld, pos + 1 ) ) >= 0 ){
pos = key;
}
}
else{
ZFtodata( S->fs + fld, B->b );
p = ( void * ) S->fs[fld].p;
S->fs[fld].p = 0;
ZFtotext( S->fs + fld, B->t.c );
Zstrmovf( B->t.c, S->fs[fld].w - S->fs[fld].d - 1, 1 );
B->t.c[S->fs[fld].w - S->fs[fld].d - 2] = key;
ZFtodata( S->fs + fld, B->t.c );
S->fs[fld].p = ( char * ) p;
ZFtotext( S->fs + fld, B->b );
}
}
}
else{
ZFtodata( S->fs + fld, B->b );
p = ( void * ) S->fs[fld].p;
S->fs[fld].p = 0;
ZFtotext( S->fs + fld, B->t.c );
Zstrmovf( B->t.c, S->fs[fld].w, 1 );
B->t.c[S->fs[fld].w - 1] = key;
ZFtodata( S->fs + fld, B->t.c );
S->fs[fld].p = ( char * ) p;
ZFtotext( S->fs + fld, B->b );
}
}
}
else{
if( Zideocode( key ) ){
l = 0;
for( n = 0; n < pos; n ++ )
if( !ZFfixpic( S->fs[fld].p, n ) )
l ++;
if( S->fs[fld].w - l >= 2 ){
p = S->fs[fld].v;
S->fs[fld].v = B->t.c;
ZFtodata( S->fs + fld, B->b );
Zstrmovb( ( ( char * ) S->fs[fld].v ) + l,
S->fs[fld].w - l, 2 );
*( ( ( char * ) S->fs[fld].v ) + l ) = key;
key = 0;
while( key < ' ' || key >= 256 || key == 0x7F )
key = Zinkey();
*( ( ( char * ) S->fs[fld].v ) + l + 1 ) = key;
ZFtotext( S->fs + fld, B->b );
S->fs[fld].v = p;
SpaceEnd( pos + 1, S->fs[fld].w );
if( ( key = FirstPos( S->fs + fld, pos + 1 ) ) >= 0 ){
if( ( key = FirstPos( S->fs + fld, key + 1 ) ) >= 0 ){
pos = key;
}
}
}
}
else{
l = 0;
for( n = 0; n < pos; n ++ )
if( !ZFfixpic( S->fs[fld].p, n ) )
l ++;
p = S->fs[fld].v;
S->fs[fld].v = B->t.c;
ZFtodata( S->fs + fld, B->b );
Zstrmovb( ( ( char * ) S->fs[fld].v ) + l,
S->fs[fld].w - l, 1 );
*( ( ( char * ) S->fs[fld].v ) + l ) = key;
ZFtotext( S->fs + fld, B->b );
S->fs[fld].v = p;
SpaceEnd( pos + 1, S->fs[fld].w );
if( ( key = FirstPos( S->fs + fld, pos + 1 ) ) >= 0 ){
pos = key;
}
}
}
key = 0;
dsp = 1;
}
}
else{
switch( key ){
case TAB:
key = DOWN;
break;
case ENTER:
if( ZBkey( S->bs, S->bc, ENTER ) < 0 )
key = DOWN;
break;
case LEFT:
if( ( key = LastPos( S->fs + fld, pos ) ) >= 0 )
pos = key;
key = 0;
break;
case RIGHT:
if( ( key = FirstPos( S->fs + fld, pos + Zideocode( B->b[pos] ) + 1 ) ) >= 0 )
pos = key;
key = 0;
break;
case BACK_SPACE:
if( S->fs[fld].t == 'D' || S->fs[fld].t == 'F'
|| S->fs[fld].t == 'L' || S->fs[fld].t == 'I' ){
if( ( S->fs[fld].t == 'D' || S->fs[fld].t == 'F' )
&& S->fs[fld].d != 0
&& ( key = LastPos( S->fs + fld, pos ) ) >= 0 ){
if( key >= S->fs[fld].w - S->fs[fld].d ){
n = Zideocode( B->b[key] ) + 1;
if( pos != S->fs[fld].w )
Zstrmovf( B->b + key, S->fs[fld].w - key, n );
memset( B->b + S->fs[fld].w - n, '0', n );
}
pos = key;
}
else{
B->b[pos] = ' ';
ZFtodata( S->fs + fld, B->b );
ZFtotext( S->fs + fld, B->b );
}
}
else{
if( ( key = LastPos( S->fs + fld, pos ) ) >= 0 ){
pos = key;
p = S->fs[fld].v;
S->fs[fld].v = B->t.c;
ZFtodata( S->fs + fld, B->b );
key = 0;
for( n = 0; n < pos; n ++ )
if( !ZFfixpic( S->fs[fld].p, n ) )
key ++;
Zstrmovf( ( ( char * ) S->fs[fld].v ) + key,
S->fs[fld].w - key,
Zideocode( *( ( ( char * ) S->fs[fld].v ) + key ) ) + 1 );
ZFtotext( S->fs + fld, B->b );
S->fs[fld].v = p;
}
}
key = 0;
dsp = 1;
break;
}
}
}
if( key != 0 && ZBkey( S->bs, S->bc, key ) < 0
&& ( fld < 0 || key != UP && key != DOWN ) )
key = 0;
if( fld >= 0 && key != 0 ){
ZFtodata( S->fs + fld, B->b );
if( S->fs[fld].a != 0 ){
if( dsp != 0 )
DispField( S->fs + fld, ZF_EDIT );
ZWattr( ZA_TEXT );
if( ( n = ( *S->fs[fld].a )( key, fld, S->fs + fld ) ) != 0 ){
if( n > 0 && n<=S->fc && ( key = FieldPos( S->fs, n - 1 ) ) >= 0 ){
ZFtotext( S->fs + fld, B->b );
DispField( S->fs + fld, ZF_NORMAL );
pos = key;
fld = n - 1;
key = 0x7FFF;
}
else if( n < -1 && ( key = FirstPos( S->fs + fld, -n - 2 ) ) >= 0 ){
pos = key;
key = 0;
}
else if( n == -1 )
{
key=0;
}
}
}
}
if( fld >= 0 && key != 0 ){
ZFtotext( S->fs + fld, B->b );
DispField( S->fs + fld, ZF_NORMAL );
}
}
if( ( n = ZBkey( S->bs, S->bc, key ) ) >= 0 ){
if( ( S->bs + n )->p != 0 ){
ZWattr( ZA_TEXT );
if( ( l = ( *( S->bs + n )->p )( key, n ) ) != 0 ){
if( l > 0 && l<=S->fc && fld>=0 && ( n = FieldPos( S->fs, l - 1 ) ) >= 0 ){
ZFtotext( S->fs + fld, B->b );
DispField( S->fs + fld, ZF_NORMAL );
pos = n;
fld = l - 1;
key = 0x7FFF;
}
else if( l < -1 && fld>=0 && ( n = FirstPos( S->fs + fld, -l - 2 ) ) >= 0 ){
pos = n;
key = 0;
}
else
key = 0;
if( fld >= 0 )
dsp = 1;
/*
if( key != -1 && fld >= 0
&& ( n = FieldPos( S->fs, key - 1 ) ) >= 0 ){
fld = key;
pos = n;
}
key = 0;
if( fld >= 0 )
dsp = 1;
*/
}
}
}
if( fld >= 0 ){
switch( key ){
case 0x7FFF:
key = 0;
dsp = 1;
break;
case UP:
while( 1 ){
if( fld > 0 )
fld --;
else
fld = S->fc - 1;
if( ( pos = FieldPos( S->fs, fld ) ) >= 0 )
break;
}
dsp = 1;
key = 0;
break;
case DOWN:
while( 1 ){
if( fld < S->fc - 1 )
fld ++;
else
fld = 0;
if( ( pos = FieldPos( S->fs, fld ) ) >= 0 )
break;
}
dsp = 1;
key = 0;
break;
case ENTER:
fld ++;
while( fld < S->fc ){
if( ( pos = FieldPos( S->fs, fld ) ) >= 0 )
break;
fld ++;
}
if( fld < S->fc ){
dsp = 1;
key = 0;
}
else
fld --;
break;
}
}
}
if( fld >= 0 ){
curs_set( 0 );
ZFdisplay( S->fs, S->fc, ZF_DISPLAY );
}
ZWlocate( or, oc );
ZWattr( oa );
}
free( B );
B = t;
return( key );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -