Exemple #1
0
char scan(void)
{
        char a,b,c,scankey;

        a=keypress();

        scankey=-1;

        if (a)
        {
                b=findrow();
                c=findcol(b);

                switch (c)
                {
                        case 1: scankey=(b*4)+0;break;
                        case 2: scankey=(b*4)+1;break;
                        case 4: scankey=(b*4)+2;break;
                        case 8: scankey=(b*4)+3;break;
                        default : break;
                }
        }
        
return scankey;
}
Exemple #2
0
void manualwrap( unsigned int *x, unsigned int *y ) {
	int i;
	insert_ret( x );
	curline->wrap = YES;
	*x = ( leftmar - 1 ) + ( *x - thaistrlen( curline->text ) );
	justify_right( );
	*y = findrow( );
	cursor_down( *y );
	for ( i = 1; i != leftmar; i++ ) {
		workline.middle[i] = WRAPBLANK;
	}
}
Exemple #3
0
// all matches
vector<int> CSVop::findrows(vector<datapair_t> entrypairs, int startrow, int Nbr2find)
{
    vector<int> rows;
    int row = 0;
    rows.clear();
    row = startrow-1;
    while(-1!=row){
        row = findrow(entrypairs,row+1,Nbr2find);
        rows.push_back(row);
    }
    rows.pop_back();
    return rows;
}
Exemple #4
0
int main( int argc, char *argv[] ) {
	/* (x,y) position of edit window. x column, y line -> (0,0) at upper left on screen */
	unsigned int xCursorPos = 0;
	unsigned int yCursorPos = 0;

	unsigned int curmenu = 0x1100;
	int i;

	cwsetup( argc, argv );

	writestatus( 0 );
	writetab( );

	splashscreen( );

	/* Main program loop */
	do {
		dispstrhgc( "   ", wind.col, 2, NORMALATTR );
		i = pulled_down_menu( &curmenu, &xCursorPos, &yCursorPos );
		if ( filename[0] != '\0' ) {
			switch ( i ) {
			case RETKEY:
				keymain = menu_to_key( curmenu );
				break;

			case ESCKEY:
				waitkbd( wind.col + xCursorPos, wind.row + yCursorPos );		/* Show blinking cursor */
				keymain = readkbd( );		/* If keypressed Get it */
				break;

			default:
				keymain = i;
				break;
			}

			while ( keymain != ESCKEY ) {
				if ( ( keymain & 0xff ) >= 32 ) {
					keymain = changekey( keymain );
					if ( insertmode ) {
						if ( !insert_char( keymain, &xCursorPos, &yCursorPos ) ) {
							linetoolong( );
						}
					} else {
						if ( !ovrwrite_char( keymain, &xCursorPos, &yCursorPos ) ) {
							linetoolong( );
						}
					}
					refreshline( xCursorPos, yCursorPos );
				} else {	/*  Function Key  */
					switch ( keymain ) {
					case PGUPKEY:
					case CNTRL_R:
						page_up( );
						break;

					case PGDNKEY:
					case CNTRL_C:
						page_down( );
						break;

					case UPKEY:
					case CNTRL_E:
						cursor_up( );
						break;

					case DNKEY:
					case CNTRL_X:
						cursor_down( yCursorPos );
						break;

					case LEKEY:
					case CNTRL_S:
						cursor_left( &xCursorPos );
						break;

					case 0x2301:
						gobeginblk( &xCursorPos );
						break;

					case 0x2401:
						goendblk( &xCursorPos );
						break;

					case RIKEY:
					case CNTRL_D:
						cursor_right( &xCursorPos, yCursorPos );
						break;

					case CNTRL_W:
						scroll_up( );
						break;

					case CNTRL_Z:
						scroll_down( );
						break;

					case CHOMEKEY:
						top_of_page( );
						break;

					case CPGUPKEY:
						topfile( &xCursorPos );
						break;

					case CENDKEY:
						bottom_of_page( );
						break;

					case CPGDNKEY:
						endfile( &xCursorPos );
						break;

					case DELKEY:
					case CNTRL_G:
						delete_char( xCursorPos );
						refreshline( xCursorPos, yCursorPos );
						changeflag = YES;
						break;

					case CNTRL_T:
						delete_word( xCursorPos );
						refreshline( xCursorPos, yCursorPos );
						changeflag = YES;
						break;

					case CNTRL_Y:
						delete_line( );
						changeflag = YES;
						break;

					case CNTRL_M:
					case RETKEY:
						if ( insertmode == NO ) {
							returnkey( &xCursorPos, yCursorPos );
						} else {
							ret_with_ins( &xCursorPos, yCursorPos );
							changeflag = YES;
						}
						break;

					case BSKEY:
					case CNTRL_H:
						backspace( &xCursorPos );
						yCursorPos = findrow( );
						refreshline( 0, yCursorPos );
						changeflag = YES;
						break;

					case INSKEY:
					case CNTRL_V:
						insertmode = !insertmode;
						writeinsmode( );
						break;

					case CNTRL_N:
						insert_ret( &xCursorPos );
						break;

					case F10KEY:
						thaimode = !thaimode;
						writelanguage( );
						break;

					case F1KEY:
						fontused = 0x00;
						writeattr( );
						break;

					case F2KEY:
						fontused = fontused | ITALICATTR;
						writeattr( );
						break;

					case F3KEY:
						fontused = fontused | ONELINEATTR;
						fontused = fontused & 0x7f;
						writeattr( );
						break;

					case F4KEY:
						fontused = fontused | TWOLINEATTR;
						fontused = fontused & 0xfe;
						writeattr( );
						break;

					case F5KEY:
						fontused = fontused | BOLDATTR;
						writeattr( );
						break;

					case F6KEY:
						fontused = fontused | ENLARGEATTR;
						writeattr( );
						break;

					case F7KEY:
						fontused = fontused | SUPERATTR;
						if ( ( fontused & SUBATTR ) == SUBATTR ) {
							fontused = fontused ^ SUBATTR;
						}
						writeattr( );
						break;

					case F8KEY:
						fontused = fontused | SUBATTR;
						if ( ( fontused & SUPERATTR ) == SUPERATTR ) {
							fontused = fontused ^ SUPERATTR;
						}
						writeattr( );
						break;

					case F9KEY:
						manualwrap( &xCursorPos, &yCursorPos );
						break;

					case ALTM:
						editmacro( );
						break;

					case TABKEY:
					case CNTRL_I:
						movetotab( &xCursorPos, yCursorPos );
						break;

					case CNTRL_K:
						blockcommand( &xCursorPos );
						break;

					case 0x1401:
						blkcmd( 'p', &xCursorPos );
						break;
					case 0x6101:
						blkcmd( 'b', &xCursorPos );
						break;
					case 0x6201:
						blkcmd( 'k', &xCursorPos );
						break;
					case 0x6301:
						blkcmd( 'c', &xCursorPos );
						break;
					case 0x6401:
						blkcmd( 'y', &xCursorPos );
						break;
					case 0x6501:
						blkcmd( 'v', &xCursorPos );
						break;
					case 0x6601:
						blkcmd( 'r', &xCursorPos );
						break;
					case 0x6701:
						blkcmd( 'w', &xCursorPos );
						break;
					case 0x6801:
						blkcmd( 'h', &xCursorPos );
						break;

					case CNTRL_O:
						onscreen( xCursorPos, yCursorPos );
						break;

					case 0x7101:
						doonscrn( 'l', xCursorPos, yCursorPos );
						break;
					case 0x7201:
						doonscrn( 'r', xCursorPos, yCursorPos );
						break;
					case 0x7301:
						doonscrn( 'i', xCursorPos, yCursorPos );
						break;
					case 0x7401:
						doonscrn( 'n', xCursorPos, yCursorPos );
						break;
					case 0x7501:
						doonscrn( 'c', xCursorPos, yCursorPos );
						break;
					case 0x7601:
						doonscrn( 'p', xCursorPos, yCursorPos );
						break;
					case 0x7701:
						doonscrn( 'x', xCursorPos, yCursorPos );
						break;

					case CNTRL_Q:
						quick( &xCursorPos, &yCursorPos );
						break;

					case 0x3501:
						deltoendline( xCursorPos, yCursorPos );
						break;

					case 0x8111:
						inscntrl( CNTRL_W, xCursorPos, yCursorPos );
						break;
					case 0x8211:
						inscntrl( CNTRL_S, xCursorPos, yCursorPos );
						break;
					case 0x8311:
						inscntrl( CNTRL_R, xCursorPos, yCursorPos );
						break;
					case 0x8411:
						inscntrl( CNTRL_B, xCursorPos, yCursorPos );
						break;
					case 0x8511:
						inscntrl( CNTRL_E, xCursorPos, yCursorPos );
						break;
					case 0x8611:
						inscntrl( CNTRL_T, xCursorPos, yCursorPos );
						break;
					case 0x8711:
						inscntrl( CNTRL_V, xCursorPos, yCursorPos );
						break;

					case CNTRL_P:
						printcntrl( xCursorPos, yCursorPos );
						break;

					case HOMEKEY:
						home( &xCursorPos );
						break;

					case ENDKEY:
						endline( &xCursorPos );
						break;

					case CLEKEY:
					case CNTRL_A:
						backword( &xCursorPos );
						break;

					case CRIKEY:
					case CNTRL_F:
						nextword( &xCursorPos, yCursorPos );
						break;

					case CNTRL_L:
						if ( source[0] != '\0' ) {
							if ( replaceflag == NO ) {
								if ( searchfwd( &xCursorPos, &yCursorPos ) == NO ) {
									wordnotfound( );
								}
							} else {
								if ( searchreplace( &xCursorPos, &yCursorPos ) == NO ) {
									wordnotfound( );
								}
							}
						}
						break;

					case CNTRL_B:
						reform( );
						break;

					case ALTP:
						gotopage( );
						break;

					case CNTRL_J:
					case ALTL:
						gotoline( );
						break;

					case 0x5101:
						searching( &xCursorPos, &yCursorPos );
						break;

					case 0x5201:
						replacing( &xCursorPos, &yCursorPos );
						break;

					case 0x8501:
						loadtoline( curline->text );
						refreshline( 0, yCursorPos );
						break;

					case CF1KEY:
						insertmacro( &macro[0][0], &xCursorPos, &yCursorPos );
						break;
					case CF2KEY:
						insertmacro( &macro[1][0], &xCursorPos, &yCursorPos );
						break;
					case CF3KEY:
						insertmacro( &macro[2][0], &xCursorPos, &yCursorPos );
						break;
					case CF4KEY:
						insertmacro( &macro[3][0], &xCursorPos, &yCursorPos );
						break;
					case CF5KEY:
						insertmacro( &macro[4][0], &xCursorPos, &yCursorPos );
						break;
					case CF6KEY:
						insertmacro( &macro[5][0], &xCursorPos, &yCursorPos );
						break;
					case CF7KEY:
						insertmacro( &macro[6][0], &xCursorPos, &yCursorPos );
						break;
					case CF8KEY:
						insertmacro( &macro[7][0], &xCursorPos, &yCursorPos );
						break;
					case CF9KEY:
						insertmacro( &macro[8][0], &xCursorPos, &yCursorPos );
						break;
					case CF10KEY:
						insertmacro( &macro[9][0], &xCursorPos, &yCursorPos );
						break;

					case AF2KEY:
						inscntrl( ITALICCODE, xCursorPos, yCursorPos );
						break;
					case AF3KEY:
						inscntrl( ONELINECODE, xCursorPos, yCursorPos );
						break;
					case AF4KEY:
						inscntrl( TWOLINECODE, xCursorPos, yCursorPos );
						break;
					case AF5KEY:
						inscntrl( BOLDCODE, xCursorPos, yCursorPos );
						break;
					case AF6KEY:
						inscntrl( ENLARGECODE, xCursorPos, yCursorPos );
						break;
					case AF7KEY:
						inscntrl( SUPERCODE, xCursorPos, yCursorPos );
						break;
					case AF8KEY:
						inscntrl( SUBCODE, xCursorPos, yCursorPos );
						break;

#ifdef WANT_TO_USE_GRAPH
					case ALTG:
						insertgraph( );
						break;
					case ALTD:
						deletegraph( );
						break;
#endif

					case ALTX:
						quitprog = YES;
						keymain = ESCKEY;
						break;

					default:
						if ( ( alt_char_map( keymain ) ) != -1 ) {
							keymain = alt_char_map( keymain );
							if ( insertmode ) {
								if ( !insert_char( keymain, &xCursorPos, &yCursorPos ) ) {
									linetoolong( );
								}
							} else {
								if ( !ovrwrite_char( keymain, &xCursorPos, &yCursorPos ) ) {
									linetoolong( );
								}
							}
							refreshline( xCursorPos, yCursorPos );
						}
						break;
					} /* switch ( keymain ) */
				}
				adjustcol( &xCursorPos );
				while ( ( yCursorPos = findrow( ) ) > ( wind.width - 1 ) ) {
					storeline( curline );
					curline = curline->previous;
					loadtoline( curline->text );
					lineno--;
				}
				if ( !keypressed( ) ) {
					if ( !pagecomplete ) {
						showpage( );
					}
					if ( !keypressed( ) ) {
						writecolno( firstcol + xCursorPos );
						dispstrhgc( "   ", wind.col, 2, NORMALATTR );
						if ( !keypressed( ) ) {
							writepageline( );
						}
					}
				}
				if ( quitprog != YES ) {
					waitkbd( wind.col + xCursorPos, wind.row + yCursorPos );
					keymain = readkbd( );
					dispkey( keymain );
				}
			}	/* while */
		} else {	/* if filename[0] != '\0' */
			errorsound( );
		}
	} while ( !quitprog );

	if ( changeflag ) {

		blockmsg( 5 );
		dispstrhgc( "ÂѧäÁèä´é¨Ñ´à¡çºá¿éÁ¢éÍÁÙÅ µéͧ¡ÒèѴà¡çºËÃ×ÍäÁè (Y/N)?", ( 16 + center_factor ) + 7, 5, REVERSEATTR );

		keymain = 0;
		while ( ( keymain != 'n' ) && ( keymain != 'N' )
			&& ( keymain != 'y' ) && ( keymain != 'Y' ) ) {
			keymain = ebioskey( 0 ) & 0xff;
			if ( ( keymain == 'y' ) || ( keymain == 'Y' ) ) {
				writeblk( filename, sentinel->next, 0, sentinel->previous, MAXCOL );
			}
		}
	}
	settext( );

	return 0;
}
Exemple #5
0
int searchfwd( unsigned int *p_xCursorPos, unsigned int *y_CursorPos ) {
	struct line_node *savepage, *templine;
	boolean enlargeflag;
	unsigned int linecount;
	unsigned int savecol;
	unsigned int startpos;
	size_t i;
	font_attr font = NORMALATTR;
	char *foundpoint;
	char *addr;

	savecol = firstcol;
	savepage = curpage;
	storeline( curline );
	templine = curpage;
	linecount = wind.width - 1;

	while ( templine != curline ) {
		linecount--;
		templine = templine->next;
	}

	startpos = linearcolumn( curline->text, *p_xCursorPos + firstcol, &font );
	foundpoint = NULL;

	while ( ( foundpoint == NULL ) && ( curline != sentinel ) ) {
		foundpoint = searchline( curline->text, startpos );

		if ( foundpoint != NULL ) {		/* found */

			while ( ( *y_CursorPos = findrow( ) ) >= wind.width ) {
				curpage = curpage->next;
			}

			*p_xCursorPos = 0;
			firstcol = 0;
			addr = curline->text;
			enlargeflag = NO;

			while ( addr != foundpoint ) {
				if ( ( whatlevel( *addr ) == MIDDLE ) && ( *addr >= 32 ) ) {
					if ( enlargeflag ) {
						( *p_xCursorPos )++;
					}
					( *p_xCursorPos )++;
				} else {
					if ( *addr == ENLARGECODE ) {
						enlargeflag = enlargeflag ^ 1;
					}
				}
				addr++;
			}

			for ( i = 0; source[i] != '\0'; i++ ) {
				if ( whatlevel( source[i] ) == MIDDLE ) {
					if ( enlargeflag ) {
						( *p_xCursorPos )++;
					}
					( *p_xCursorPos )++;
				}
			}

			while ( *p_xCursorPos >= wind.length ) {
				firstcol = firstcol + wind.length;
				*p_xCursorPos = *p_xCursorPos - wind.length;
			}

		} else {
			if ( linecount > 0 ) {
				linecount--;
				curline = curline->next;
				lineno++;
			} else {
				curline = curline->next;
				lineno++;
				curpage = curline;
				linecount = wind.width - 1;
			}
			startpos = 0;
		}
	}

	if ( foundpoint == NULL ) {
		curline = sentinel->previous;
		curpage = curline;
		loadtoline( curline->text );
		endline( p_xCursorPos );
	}

	loadtoline( curline->text );

	if ( savepage != curpage ) {
		showpageall( );
	} else {
		if ( firstcol != savecol ) {
			showpageall( );
		}
	}

	if ( foundpoint != NULL ) {
		return( YES );
	} else {
		return( NO );
	}

}
Exemple #6
0
// search and
int CSVop::findrow(vector<datapair_t> entrypairs, int startrow)
{
    return findrow(entrypairs, startrow, int(entrypairs.size()));
}
Exemple #7
0
void reform( void ) {
	struct line_node *templine, *firstline, *freeline;
	unsigned char *temp1, *temp2, *temp3, *cuthere;
	unsigned int i, j;
	font_attr font = 0;
	char fontcode[9];

	storeline( curline );
	firstline = curline;
	templine = firstline;	/* start to concatenate all lines to one line only */
	temp1 = ( char * ) malloc( 1 );
	*temp1 = '\0';
	while ( 1 ) {
		temp2 = ( char * ) malloc( strlen( templine->text ) + 1 );
		i = 0;
		j = 0;
		while ( templine->text[i] != '\0' ) {
			if ( templine->text[i] != WRAPBLANK ) {
				temp2[j] = templine->text[i];
				j++;
			}
			i++;
		}
		temp2[j] = '\0';
		temp3 = ( char * ) malloc( strlen( temp1 ) + strlen( temp2 ) + 1 );
		strcpy( temp3, temp1 );
		strcat( temp3, temp2 );
		free( temp1 );
		free( temp2 );
		if ( templine->wrap == NO ) break;
		temp1 = temp3;
		templine = templine->next;
	}
	/* now paragraph is in the one line only pointed by temp3 */
	/* so we will compress two or more blanks to one blank only */
	compress_blank( temp3 );

	templine->previous = firstline->previous;
	( templine->previous )->next = templine;
	free( templine->text );
	templine->text = temp3;
	if ( curline == curpage ) {
		curpage = templine;
	}
	curline = templine;
	while ( firstline != templine ) {
		freeline = firstline;
		firstline = firstline->next;
		free( freeline->text );
		if ( freeline->graph != NULL ) {
			free( freeline->graph );
		}
		free( freeline );
	}
	while ( thaistrlen( curline->text ) > ( rightmar - leftmar + 1 ) ) {
		i = rightmar - leftmar;   /*   + 1;   */
		temp1 = curline->text;
		while ( ( i != 0 ) && ( *temp1 != '\0' ) ) {
			for ( temp1++; whatlevel( *temp1 ) != MIDDLE; temp1++ );
			i--;
		}
		temp3 = temp1;
		for ( i = 10; ( i != 0 ) && ( *temp3 != '\0' ); i-- ) {
			temp3++;
		}
		cuthere = FINDCUT( curline->text, temp3, temp1 );
		cuthere++;
		font = 0;
		for ( temp1 = curline->text; temp1 != cuthere; temp1++ ) {
			if ( *temp1 < 32 ) {
				togglefont( &font, *temp1 );
			}
		}
		findstrcode( fontcode, font );
		templine = ( struct line_node * ) malloc( sizeof( struct line_node ) );
		templine->text = ( char * ) malloc( strlen( fontcode ) + strlen( cuthere ) + 1 );
		templine->wrap = NO;
		templine->graph = NULL;
		strcpy( templine->text, fontcode );
		strcat( templine->text, cuthere );
		*cuthere = '\0';
		temp3 = ( char * ) malloc( leftmar + strlen( curline->text ) + strlen( fontcode ) );
		i = 0;
		while ( i != ( leftmar - 1 ) ) {
			temp3[i] = WRAPBLANK;
			i++;
		}
		temp3[i] = '\0';
		strcat( temp3, curline->text );
		strcat( temp3, fontcode );
		free( curline->text );
		curline->text = temp3;
		templine->next = curline->next;
		( curline->next )->previous = templine;
		templine->previous = curline;
		curline->next = templine;
		curline->wrap = YES;
		loadtoline( curline->text );
		justify_right( );
		storeline( curline );
		curline = curline->next;
	}
	temp3 = ( char * ) malloc( strlen( curline->text ) + leftmar );
	i = 0;
	while ( i != ( leftmar - 1 ) ) {
		temp3[i] = WRAPBLANK;
		i++;
	}
	temp3[i] = '\0';
	strcat( temp3, curline->text );
	free( curline->text );
	curline->text = temp3;
	if ( curline->next != sentinel ) {
		curline = curline->next;
	}
	lineno = findlineno( curline );
	loadtoline( curline->text );
	while ( findrow( ) > ( wind.width - 1 ) ) {
		curpage = curpage->next;
	}
	changeflag = YES;
	pagecomplete = NO;
	blkbegin.lineno = 1;
	blkend.lineno = 1;
	blkbegin.column = 0;
	blkend.column = 0;
}
Exemple #8
0
void autowrap( unsigned int *x, unsigned int *y ) {
	unsigned int i, j, already = NO, diff;
	char *temp1, *temp3, *cuthere, fontcode[9];
	font_attr font = 0;
	struct line_node *templine;

	storeline( curline );
	diff = strlen( workline.middle ) - ( *x + firstcol + 1 );
	i = 0;
	j = 0;
	while ( curline->text[i] != '\0' ) {
		if ( curline->text[i] != WRAPBLANK ) {
			curline->text[j] = curline->text[i];
			j++;
			already = YES;
		} else {
			if ( already == NO ) {
				curline->text[j] = curline->text[i];
				j++;
			}
		}
		i++;
	}
	curline->text[j] = '\0';
	temp1 = curline->text;
	for ( i = rightmar - 2; ( i > 0 ) && ( *temp1 != '\0' ); i-- ) {
		temp1++;
		while ( whatlevel( *temp1 ) != MIDDLE ) {
			temp1++;
		}
	}
	temp3 = temp1;
	for ( i = 10; ( i != 0 ) && ( *temp3 != '\0' ); i-- ) {
		temp3++;
	}
	cuthere = FINDCUT( curline->text, temp3, temp1 );
	cuthere++;
	for ( temp1 = curline->text; temp1 != cuthere; temp1++ ) {
		if ( *temp1 < 32 ) {
			togglefont( &font, *temp1 );
		}
	}
	findstrcode( fontcode, font );
	templine = ( struct line_node * ) malloc( sizeof( struct line_node ) );
	templine->text = ( char * ) malloc( leftmar + strlen( fontcode ) + strlen( cuthere ) );
	for ( i = 0; i != ( leftmar - 1 ); i++ ) {
		templine->text[i] = WRAPBLANK;
	}
	templine->text[i] = '\0';
	strcat( templine->text, fontcode );
	strcat( templine->text, cuthere );
	templine->graph = NULL;
	templine->wrap = ( curline->next )->wrap;
	*cuthere = '\0';
	temp3 = ( char * ) malloc( strlen( curline->text ) + strlen( fontcode ) + 1 );
	strcpy( temp3, curline->text );
	strcat( temp3, fontcode );
	free( curline->text );
	curline->text = temp3;
	templine->next = curline->next;
	( curline->next )->previous = templine;
	templine->previous = curline;
	curline->next = templine;
	curline->wrap = YES;
	loadtoline( curline->text );
	justify_right( );
	*y = findrow( );
	cursor_down( *y );
	firstcol = 0;
	gocol( strlen( workline.middle ) - 1 - diff, x );
	pagecomplete = NO;
}